写点什么

极客时间运维进阶训练营第五周作业

作者:好吃不贵
  • 2022-11-27
    浙江
  • 本文字数:2175 字

    阅读完需:约 7 分钟

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 命令。

配置:

  1. 需要在/etc/hosts 里配置 harbor.magedu.net 的 IP 地址。

  2. /etc/docker/daemon.json 里配置 insecure-registry。"insecure-registries": ["harbor.magedu.com","harbor.myserver.com"]

  3. 配置 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 等加密文件。

配置:

  1. 配置最大 map 数量:

vim /etc/sysctl.conf

加 vm.max_map_count = 262144

sysctl -p

忘记配置会导致 elasticsearch 启动之后退出,在 systemd status elasticsearch 可以看到相关日志。

  1. 配置主机域名解析

加网址和 IP 的对应关系,到/etc/hosts 文件里。

  1. 更新默认密码

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/

极客时间,马哥教育,运维训练营

用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
极客时间运维进阶训练营第五周作业_好吃不贵_InfoQ写作社区