目录

中小型企业通用自动化运维架构 学习笔记

此课程涉及到的技术: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

  • Management
  • Discover

其他略