elasticsearch_and_kibana

docker exec -it elasticsearch /bin/bash
elasticsearch的配置文件
cd /usr/share/elasticsearch/config/
vi elasticsearch.yml
在elasticsearch.yml的文件末尾加上:

http.cors.enabled: true
http.cors.allow-origin: “*”
配置 跨域问题

es自带的分词器对中文分词不是很友好,所以我们下载开源的IK分词器来解决这个问题。首先进入到plugins目录中下载分词器,下载完成后然后解压,再重启es即可。具体步骤如下:
注意:elasticsearch的版本和ik分词器的版本需要保持一致,不然在重启的时候会失败。可以在这查看所有版本,选择合适自己版本的右键复制链接地址即可。点击这里

cd /usr/share/elasticsearch/plugins/
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
exit
docker restart elasticsearch
需要进入 elasticsearch镜像内部进行安装

kibana为elasticsearch的可视化工具

docker pull kibana:7.2.0
docker run –name kibana –link=elasticsearch:test -p 5601:5601 -d kibana:7.2.0
docker start kibana
此时会无法访问 因为此时kibana的配置文件 中默认的 server.host 为127.0.0.1:9002
在docker中是无法访问的,应该改为外机的地址,内网外网都行,但外网必须端口开放。

如果当前使用的是nginx的路径映射而非开启对外端口 那么会依然报错,
此时应该再设置kibana的server.basePath

kibana的配置参数如下

server.port:
默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号。
server.host:
默认值: “localhost” 指定后端服务器的主机地址。
server.basePath:
如果启用了代理,指定 Kibana 的路径,该配置项只影响 Kibana 生成的 URLs,转发请求到 Kibana 时代理会移除基础路径值,该配置项不能以斜杠 (/)结尾。
server.maxPayloadBytes:
默认值: 1048576 服务器请求的最大负载,单位字节。
server.name:
默认值: “您的主机名” Kibana 实例对外展示的名称。
server.defaultRoute:
默认值: “/app/kibana” Kibana 的默认路径,该配置项可改变 Kibana 的登录页面。
elasticsearch.url:
默认值: “http://localhost:9200" 用来处理所有查询的 Elasticsearch 实例的 URL 。
elasticsearch.preserveHost:
默认值: true 该设置项的值为 true 时,Kibana 使用 server.host 设定的主机名,该设置项的值为 false 时,Kibana 使用主机的主机名来连接 Kibana 实例。
kibana.index:
默认值: “.kibana” Kibana 使用 Elasticsearch 中的索引来存储保存的检索,可视化控件以及仪表板。如果没有索引,Kibana 会创建一个新的索引。
kibana.defaultAppId:
默认值: “discover” 默认加载的应用。
tilemap.url:
Kibana 用来在 tile 地图可视化组件中展示地图服务的 URL。默认时,Kibana 从外部的元数据服务读取 url,用户也可以覆盖该参数,使用自己的 tile 地图服务。例如:”https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"
tilemap.options.minZoom:
默认值: 1 最小缩放级别。
tilemap.options.maxZoom:
默认值: 10 最大缩放级别。
tilemap.options.attribution:
默认值: “© Elastic Tile Service“ 地图属性字符串。
tilemap.options.subdomains:
服务使用的二级域名列表,用 {s} 指定二级域名的 URL 地址。
elasticsearch.username: 和 elasticsearch.password:
Elasticsearch 设置了基本的权限认证,该配置项提供了用户名和密码,用于 Kibana 启动时维护索引。Kibana 用户仍需要 Elasticsearch 由 Kibana 服务端代理的认证。
server.ssl.enabled
默认值: “false” 对到浏览器端的请求启用 SSL,设为 true 时, server.ssl.certificate 和 server.ssl.key 也要设置。
server.ssl.certificate: 和 server.ssl.key:
PEM 格式 SSL 证书和 SSL 密钥文件的路径。
server.ssl.keyPassphrase
解密私钥的口令,该设置项可选,因为密钥可能没有加密。
server.ssl.certificateAuthorities
可信任 PEM 编码的证书文件路径列表。
server.ssl.supportedProtocols
默认值: TLSv1、TLSv1.1、TLSv1.2 版本支持的协议,有效的协议类型: TLSv1 、 TLSv1.1 、 TLSv1.2 。
server.ssl.cipherSuites
默认值: ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, DHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, DHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA256, HIGH,!aNULL, !eNULL, !EXPORT, !DES, !RC4, !MD5, !PSK, !SRP, !CAMELLIA. 具体格式和有效参数可通过OpenSSL cipher list format documentation 获得。
elasticsearch.ssl.certificate: 和 elasticsearch.ssl.key:
可选配置项,提供 PEM格式 SSL 证书和密钥文件的路径。这些文件确保 Elasticsearch 后端使用同样的密钥文件。
elasticsearch.ssl.keyPassphrase
解密私钥的口令,该设置项可选,因为密钥可能没有加密。
elasticsearch.ssl.certificateAuthorities:
指定用于 Elasticsearch 实例的 PEM 证书文件路径。
elasticsearch.ssl.verificationMode:
默认值: full 控制证书的认证,可用的值有 none 、 certificate 、 full 。 full 执行主机名验证,certificate 不执行主机名验证。
elasticsearch.pingTimeout:
默认值: elasticsearch.requestTimeout setting 的值,等待 Elasticsearch 的响应时间。
elasticsearch.requestTimeout:
默认值: 30000 等待后端或 Elasticsearch 的响应时间,单位微秒,该值必须为正整数。
elasticsearch.requestHeadersWhitelist:
默认值: [ ‘authorization’ ] Kibana 客户端发送到 Elasticsearch 头体,发送 no 头体,设置该值为[]。
elasticsearch.customHeaders:
默认值: {} 发往 Elasticsearch的头体和值, 不管 elasticsearch.requestHeadersWhitelist 如何配置,任何自定义的头体不会被客户端头体覆盖。
elasticsearch.shardTimeout:
默认值: 0 Elasticsearch 等待分片响应时间,单位微秒,0即禁用。
elasticsearch.startupTimeout:
默认值: 5000 Kibana 启动时等待 Elasticsearch 的时间,单位微秒。
pid.file:
指定 Kibana 的进程 ID 文件的路径。
logging.dest:
默认值: stdout 指定 Kibana 日志输出的文件。
logging.silent:
默认值: false 该值设为 true 时,禁止所有日志输出。
logging.quiet:
默认值: false 该值设为 true 时,禁止除错误信息除外的所有日志输出。
logging.verbose
默认值: false 该值设为 true 时,记下所有事件包括系统使用信息和所有请求的日志。
ops.interval
默认值: 5000 设置系统和进程取样间隔,单位微妙,最小值100。
status.allowAnonymous
默认值: false 如果启用了权限,该项设置为 true 即允许所有非授权用户访问 Kibana 服务端 API 和状态页面。
cpu.cgroup.path.override
如果挂载点跟 /proc/self/cgroup 不一致,覆盖 cgroup cpu 路径。
cpuacct.cgroup.path.override
如果挂载点跟 /proc/self/cgroup 不一致,覆盖 cgroup cpuacct 路径。
console.enabled
默认值: true 设为 false 来禁用控制台,切换该值后服务端下次启动时会重新生成资源文件,因此会导致页面服务有点延迟。
elasticsearch.tribe.url:
Elasticsearch tribe 实例的 URL,用于所有查询。
elasticsearch.tribe.username: 和 elasticsearch.tribe.password:
Elasticsearch 设置了基本的权限认证,该配置项提供了用户名和密码,用于 Kibana 启动时维护索引。Kibana 用户仍需要 Elasticsearch 由 Kibana 服务端代理的认证。
elasticsearch.tribe.ssl.certificate: 和 elasticsearch.tribe.ssl.key:
可选配置项,提供 PEM 格式 SSL 证书和密钥文件的路径。这些文件确保 Elasticsearch 后端使用同样的密钥文件。
elasticsearch.tribe.ssl.keyPassphrase
解密私钥的口令,该设置项可选,因为密钥可能没有加密。
elasticsearch.tribe.ssl.certificateAuthorities:
指定用于 Elasticsearch tribe 实例的 PEM 证书文件路径。
elasticsearch.tribe.ssl.verificationMode:
默认值: full 控制证书的认证,可用的值有 none 、 certificate 、 full 。 full 执行主机名验证, certificate 不执行主机名验证。
elasticsearch.tribe.pingTimeout:
默认值: elasticsearch.tribe.requestTimeout setting 的值,等待 Elasticsearch 的响应时间。
elasticsearch.tribe.requestTimeout:
Default: 30000 等待后端或 Elasticsearch 的响应时间,单位微秒,该值必须为正整数。
elasticsearch.tribe.requestHeadersWhitelist:
默认值: [ ‘authorization’ ] Kibana 发往 Elasticsearch 的客户端头体,发送 no 头体,设置该值为[]。
elasticsearch.tribe.customHeaders:
默认值: {} 发往 Elasticsearch的头体和值,不管 elasticsearch.tribe.requestHeadersWhitelist 如何配置,任何自定义的头体不会被客户端头体覆盖。

//冒号后必须加空格
i18n.locale: “zh-CN” //中文设置

ssr服务器安装

Python 版 SS 安装,SS容易被封 :

Debian / Ubuntu:

1
2
apt-get install python-pip
pip install shadowsocks

CentOS(7以上版本):
1
2
yum install python-setuptools && easy_install pip
pip install shadowsocks

运行:
1
ssserver -p 443 -k password -m aes-256-cfb

后台运行:
1
sudo ssserver -p 443 -k password -m aes-256-cfb –user nobody -d start

停止:
1
sudo ssserver -d stop

查看 log:
1
sudo less /var/log/shadowsocks.log

说明
1
2
3
4
5
6
7
-p 端口号

-k 密码

-m 加密方式 (rc4-md5,salsa20,chacha20,aes-256-cfb,aes-102-cfb,aes-128-cfb)

-h 查看命令帮助

配置文件创建:
1
2
3
4
5
6
7
8
9
10
11
路径 /etc/shadowsocks.json
{
“server”:”my_server_ip”,
“server_port”:8388,
“local_address”: “127.0.0.1”,
“local_port”:1080,
“password”:”mypassword”,
“timeout”:300,
“method”:”aes-256-cfb”,
“fast_open”: false
}

运行:
1
ssserver -c /etc/shadowsocks.json

后台运行:
1
2
ssserver -c /etc/shadowsocks.json -d start
ssserver -c /etc/shadowsocks.json -d stop

下面就是对于ssr-server端的一键安装版本,直接将下面的代码复制到你的服务器终端中执行即可(为了防止丢失地址为腾讯云COS链接):
1
2
3
4
5
wget –no-check-certificate -O shadowsocks-all.sh http://index-1251746107.file.myqcloud.com/shadowsocks-all.sh

chmod +x shadowsocks-all.sh

./shadowsocks-all.sh

或者
1
2
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssrmu.sh && chmod +x ssrmu.sh && bash ssrmu.sh


ShadowsocksR 安装后,自动设置为 系统服务,所以支持使用服务来启动/停止等操作,同时支持开机启动。

启动 ShadowsocksR:service ssrmu start
停止 ShadowsocksR:service ssrmu stop
重启 ShadowsocksR:service ssrmu restart
查看 ShadowsocksR状态:service ssrmu status

安装目录:/usr/local/shadowsocksr
配置文件:/usr/local/shadowsocksr/user-config.json
数据文件:/usr/local/shadowsocksr/mudb.json(这个就是记录你设定端口和密码的地方)
启动文件:/etc/init.d/shadowsocksr/ssrmu

之后我们可以配置一个通过TCP拥塞控制来进行加速的服务:

1
2
3
4
5
wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh

chmod +x bbr.sh

./bbr.sh

go get 找不到 google.golang.org/protobuf 解决办法

使用go get 安装由于被墙找不到google.golang.org/protobuf/proto

首先找到源码位置https://cloud.google.com/go/google.golang.org

将其mark成一个git项目到码云上

已经有网友弄过
地址:https://robinqiwei.coding.net/p/googleprotobuf/git

然后手动安装 ,到本地安装库下 $GOPATH/src/google.golang.org/protobuf

1
2
mkdir -p $GOPATH/src/google.golang.org
git clone https://e.coding.net/robinqiwei/googleprotobuf.git $GOPATH/src/google.golang.org/protobuf

GoRoot 和 GoPath

GO在开发过程中需要在go的patn环境变量中开发。

GOROOT就是go的安装路径。
要执行go命令和go工具, 就要配置go的可执行文件的路径:
操作如下:
在~/.bash_profile中配置如下:
export $PATH:$GOROOT/bin

GOPATH就是你的工作目录。
go install/go get和 go的工具等会用到GOPATH环境变量.
需要把GOPATH中的可执行目录也配置到环境变量中
在~/bash_profile中配置,
export $PATH:$GOPATH/bin

linux简单命令

//查找大于1G的文件
find /opt/ -size +1G 2>/dev/null

一次服务器磁盘占满的数据排查

首先使用df -h发现磁盘占满99%

看到是/var/lib/docker/containers/**里面占用了 超大的数据

怀疑是docker的镜像日志造成删除镜像日志
docker system prune
发现删除之后仍然占存很大
怀疑是进程未释放 删除大文件进程、【https://www.cnblogs.com/healthinfo/p/12402139.html】
通过 命令 lsof -n | grep deleted查找哪些删除进程在未被注销

1
2
3
4
5
6
7
8
9
10
11
kill -9 进程号
发现依然占满
但是任凭各个文件目录下 du -sh * 也找不到大文件,于是立马虚心求教大拿,大拿一个命令就解决了,什么命令这么nb+神奇呢?

lsof -n | grep deleted 查看到占用的进程

kill -9 进程号

再df -h就没问题了,以下是公司大拿给出来的解释:

当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间

最后到根目录 / 下执行du -sh
发现各个目录 大小,然后发现 root目录下 占用很大的数据,
进入root下 使用 du -sh
却并未有大文件 。找不到 文件在哪【https://blog.csdn.net/bowei026/article/details/87696331】
排除解决,换用命令:
du -sh .[!.]*

最后发现 原来是隐藏文件中存在超大文件数据

删除文件解决

到根目录 / 中使用 du -sh *
发现

docker简单命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker使用内部不存在的命令需要进行安装,
docker内部默认ubuntu环境,所以需要
docker内部使用 ping命令需要使用apt-get安装

docker system dh 查看docker系统内部存储

docker system prune //清理docker来自动清理空间
该指令默认会清除所有如下资源:
已停止的容器(container)
未被任何容器所使用的卷(volume)
未被任何容器所关联的网络(network)
所有悬空镜像(image)。
该指令默认只会清除悬空镜像,未被使用的镜像不会被删除。
添加 -a 或 --all 参数后,可以一并清除所有未使用的镜像和悬空镜像。

git代理

使用git代理配置git调用时候的账号邮箱,或服务代理等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//例子
git config --global https.proxy https://proxyuser:proxypassword@ip/域名:port

也可以使用在用户目录下的.gitconfig文件(如果不存在则创建)中写入
[http]
proxy = https://proxyuser:proxypassword@ip/域名:port //代理配置
[credential]
helper = store //凭证配置【这个配置表明将会在第一次使用用户密码之后记住该密码,即下次不用在输入】
如果你的凭证位置没有指定,则去用户目录下查看,发现多了一个.git_credentials文件,打开文件可以看到里面以明文存放你的用户名和密码
[user]
name = robot //用户配置
email = robot@mland.club
[push]
default = simple

docker安装redis

1
docker pull redis:5
1
2
3
4
5
6
7
8
docker run \
-p 127.0.0.1:6379:6379 \ //映射端口 容器内到宿主的127.0.0.1:6379
--name redis \ //给容器起名名字叫做redis
-v /data/docker/redis/data:/data \ //映射文件夹
-v /data/docker/redis/redis.conf:/etc/redis/redis.conf \ //映射文件
-d redis:5 \ //使用redis的pull的版本
redis-server /etc/redis/redis.conf \ //使用redis配置文件开启redis服务
--appendonly yes 后台运行

redis.conf文件如下

1
2
3
4
5
port 6379 //开启端口6379
bind * //docker内部绑定容器需要使用*号 //不能使用127 127 是相对于母机的如果跨docker没用 docker内部指向不一样
daemonize no
pidfile /data/docker/redis/redis.pid
appendonly yes