极客时间运维进阶训练营第五周作业
1.完全基于 pipline 实现完整的代码部署流水线
jenkins 的 pipeline 里,尽可能用双引号“,少用单引号,因为单引号会认为里面的是 raw string,那么带 ${var}也不会被解析
比如 def WEB_GIT_URL = "git@${env.NODE_2}:user3/web_test.git"
之前写成 def WEB_GIT_URL = 'git@${env.NODE_2}:user3/web_test.git'就没有被解析。
环境上都要装上 docker,这样 agent 可以配置为 any,任意服务器都可以使用 docker 以及 docker-compose 命令。
配置:
需要在/etc/hosts 里配置 harbor.magedu.net 的 IP 地址。
/etc/docker/daemon.json 里配置 insecure-registry。"insecure-registries": ["harbor.magedu.com","harbor.myserver.com"]
配置 docker.service,systemctl enable docker,开机自动启动。
docker 装好之后,需要重启一下。
以及。
环境间,需要能够互相 ssh,都要加上 key,否则会出现"Host key verification failed."的错误信息。
最终 pipeline 代码见 GitHub:
测试结果见:
2.熟悉 ELK 各组件的功能、elasticsearch 的节点角色类型
ELK 的 E 表示 ElasticSearch,主要用于搜索,以及存储数据。数据通常是日志。
L 表示 Logstash,主要用于收集 log,处理 log,可以选择发送到 ElasticSearch。
K 表示 Kibana,主要用于可视化,更好地显示数据。
Elastic 的节点主要有 master,data,client(co-ordinating),ingest 等。
master 用于管理。比如索引的创建、删除,分片 shard 的分配,node 节点的添加、删除等。一个 ES 集群只有一个活跃的 master 节点。
data 用于存储数据,比如分片的创建和删除,数据的读写、更新、删除等。
client 用于转发。比如将数据读写请求转发到 data node,管理请求发给 master。
ingest 用于预处理。比如对数据的字段删除、文本提取等操作。
3.熟悉索引、doc、分片与副本的概念
索引是 index,用于管理一类相同的数据,在逻辑上通过同一个 index 进行查询、修改与删除等操作。
doc 是存储的内容。包含 key 和 value。
分片 shard 是存储的单元。对 index 拆分,所有分片合起来就是 index 的所有数据。
副本 replica 是存储的备份。比如主分片和副本分片。写入主分片时,自动同步到副本分片。副本分片时只读的。主分片宕机后,副本分片可以提升为主分片,继续写入数据,并添加新的副本分片。
4.掌握不同环境的 ELK 部署规划,基于 deb 或二进制部署 elasticsearch 集群
ELK 的安装分为 elastic search,logstash,kibina 三个软件,版本需要统一才行。一般二进制安装用的比较多一些。
Elastic search 的安装:
下载:
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
选择 ES 最新版本,或者需要的版本下载即可。
安装:
解压到/apps 目录,软链接为/apps/elasticsearch,配置 yml 文件。见 github。
配置 xpack 等加密文件。
配置:
配置最大 map 数量:
vim /etc/sysctl.conf
加 vm.max_map_count = 262144
sysctl -p
忘记配置会导致 elasticsearch 启动之后退出,在 systemd status elasticsearch 可以看到相关日志。
配置主机域名解析
加网址和 IP 的对应关系,到/etc/hosts 文件里。
更新默认密码
passwd elasticsearch
在另外 2 台机器也同样配置,即可组成一个 ES 集群。
5.了解 elasticsearch API 的简单使用,安装 head 插件管理 ES 的数据
head 插件可以通过 chrome 商店下载。打开后,选择 new,新增到 ES 的连接。
6.安装 logstash 收集不同类型的系统日志并写入到 ES 的不同 index
Logstash 的安装:
下载:
https://artifacts.elastic.co/downloads/logstash/logstash-8.5.1-linux-x86_64.tar.gz
或者直接在 ubuntu 安装 deb 文件。
安装:
解压并软连接到/apps/logstash 即可。
配置:
可以收集本地数据/var/log/messages 等,远端数据 redis,kafka,jdbc,s3 等,特定数据 syslog,beats,TCP 等。
通过 systemd 启动 logstash 的服务。
输出到 ES 的配置如下:
systemctl start logstash && systemctl enable logstash
cat /etc/logstash/conf.d/syslog-to-es.conf
input {
file {
path => "/var/log/syslog"
type => "systemlog"
start_position => "beginning"
stat_interval => "1"
}
}
output {
if [type] == "systemlog" {
elasticsearch {
hosts => ["192.168.0.75:9200"]
index => "magedu-systemlog-%{+YYYY.MM.dd}"
password => "123456"
user => "magedu"
}}
}
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/syslog-to-es.conf -t
可以测试。
7.安装 kibana、查看 ES 集群的数据
Kibana 的安装:
下载:
https://artifacts.elastic.co/downloads/kibana/kibana-8.5.1-linux-x86_64.tar.gz
或者直接下载 deb 文件。
安装:
dpkg -i *.deb 安装。
配置:
修改配置文件
server.port: 5601
elasticsearch.hosts: ["http://192.168.0.75:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "magedu123"
i18n.locale: "zh-CN"
systemctl restart kibana.service && systemctl enable kibana.service
lsof -i :5601
如果看到端口打开了,说明服务起来了。
查看 ES 集群的数据:
连接装了 kibana 的服务器,http 通过:5601 端口连上。
Stack Management -> 数据视图 -> 创建数据视图,可以创建视图。
discover -> 选择数据视图。查看数据。
扩展:了解 heartbeat 和 metricbeat 的使用
heartbeat 通过 icmp,tcp,http 检测主机或者网站的可用性。
metricbeat 目前主要用于收集 cpu、mem 等信息,和 Prometheus 有一些重叠。
参考资料
https://www.gangofcoders.net/solution/jenkins-pipeline-sh-bad-substitution-error/
极客时间,马哥教育,运维训练营
评论