此课程涉及到的技术:ansible + zabbix + jumpServer(堡垒机) + ELK + Jenkins + Gogs(Git 服务器,占用资源少)
自动化运维的好处:
- 批量管理
- 及时监控报警
- 项目的持续集成
- 运维数据的处理、统计、分析
机器管理:
1
2
3
4
|
ansible -> 运行日志 -> zabbix 监控 -> 触发器 -> 报警
|
|
ELK -> 统计、分析
|
ELK 收集数据:
1
|
Logstash 收集数据 -> 数据整理 -> Elasticsearch -> Kibana -> 统计、分析、查询
|
持续集成:
1
2
3
4
|
Git 提交 -> hook 钩子 -> Jenkins -> 自动构建
Jenkins 构建日志 -> Zabbix 监控
Jenkins 构建日志 -> ELK -> 统计
|
ansible
/etc/ansible/hosts
文件示例:
1
|
test ansible\_ssh\_port=22 ansible\_ssh\_host=192.168.0.110 ansible\_ssh\_user=ubuntu
|
1
2
3
4
5
6
|
ansible test -m shell -a 'ls /home' --user=root
ansible test -m shell -a 'ls /root' --user=root --ask-pass
ansible centos7 -m yum -a "name=mariadb-server state=latest"
ansible centos7 -m systemd -a "name=mariadb state=started"
|
playbook
yml 文件,示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
- hosts: web1
remote_user: root
vars:
username: bob
password: 123
tasks:
- name: add user
user: name={{ username }} state=present
when: ansible_os_family == "Debian"
- name: set password
shell: echo {{ password }} |passwd --stdin {{ username }}
- name: install httpd php
yum: name={{ item }} state=present
with_items:
- httpd
- php
- name: add two users
user: name={{ item }} state=present groups={{ item.groups }}
with_items:
- { name: 'user1', groups: 'group1'}
- { name: 'user2', groups: 'group2'}
|
Zabbix
安装参考官网。
Zabbix-server
若用 CentOS,记得关闭 SeLinux,否则会遇到 cannot set resource limit
核心内容:
- 自动发现
- 报警规则(添加、发送、接收)
- 统计图表、聚合图表
- 自定义监控
- zabbix_get 验证脚本是否正常工作
- API ,参见官网文档
自定义监控:
- 创建脚本
- 创建 zabbix item
- 创建 zabbix trigger
- 创建 zabbix action
zabbix item 通过关联自定义脚本来采集信息, trigger 进行判断,若为 true,则触发 action ,执行报警规则中定义的行为
Zabbix-client
配置文件 ~/etc/zabbix/zabbix-agentd.conf~,需修改其中的 Server 值
ELK
默认需要 4G 内存
Elasticsearch head 插件
Logstash
配置文件需要指定 input 和 output
test.conf
文件内容示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
input {
tcp {
port => 12345
codec => json {
charset => "UTF-8"
}
}
}
output {
elasticsearch {
hosts => "127.0.0.1"
index => "logstash-%{+YYYY.MM.dd}"
document_type => "test"
}
}
|
运行命令如下:
./bin/logstash -f ./test.conf
Kibana
其他略