promtail部署方式

[root@ip-172-63-251-171 ansible]# ls /root/work/promtail-loki
config.yaml  host  promtail-linux-amd64  promtail-linux-amd64.service  promtail-linux-amd64.zip  runpromtail.yaml
[root@ip-172-63-251-171 ansible]# cd /root/work/promtail-loki
[root@ip-172-63-251-171 promtail-loki]# cat config.yaml 
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki.server:3100/loki/api/v1/push

scrape_configs:
  - job_name: jarlog
    pipeline_stages:
    static_configs:
    - targets:
       - localhost
      labels:
       job: jar-logs
       host: prod
       __path__: /data/deploy/*/log*/*.log

  - job_name: jarlog1
    pipeline_stages:
    static_configs:
    - targets:
       - localhost
      labels:
       job: jar1-logs
       host: prod
       __path__: /data/deploy/*/*/*/*/*.log 

  - job_name: jarlog2
    pipeline_stages:
    static_configs:
    - targets:
       - localhost
      labels:
       job: jar2-logs
       host: prod
       __path__: /data/logs/*/*.log 

  - job_name: tomcatlog
    pipeline_stages:
    static_configs:
    - targets:
       - localhost
      labels:
       job: tomcat-logs
       host: prod
       __path__: /data/deploy/*/logs/*.out

[root@ip-172-63-251-171 promtail-loki]# cat promtail-linux-amd64.service 
[Unit]
Description=promtail-linux-amd64
After=network.target
[Service]
Type=simple
ExecStart=/data/soft/promtail/promtail-linux-amd64 --config.file=/data/soft/promtail/config.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@ip-172-63-251-171 promtail-loki]# cat runpromtail.yaml 
---
  - hosts: app
    remote_user: root
    tasks:
      - name: sync config
        synchronize:
          src: /root/work/promtail-loki/ 
          dest: /data/soft/promtail/
          mode: push
      - name: copy service
        copy:
          src: /root/work/promtail-loki/promtail-linux-amd64.service
          dest: /lib/systemd/system/promtail-linux-amd64.service
      - name: reload
        shell: systemctl daemon-reload
      - name: start
        shell: systemctl start promtail-linux-amd64.service
      - name: enable 
        shell: systemctl enable promtail-linux-amd64.service
      #- name: start promtail-linux-amd64
      #  shell: "nohup /data/soft/promtail/promtail-linux-amd64 --config.file=/data/soft/promtail/config.yaml >/dev/null 2>&1 &"

创建一份ansible-playbook服务器初始化文件
centos系统

---
- hosts: "{{host}}"
  gather_facts: no
  user: centos
  become: yes
  become_user: root
  become_method: sudo
  tasks:
  - name: 替换key
    copy:
      src: "/root/ops/prod-authorized_keys"
      dest: "/root/.ssh/authorized_keys"
      mode: "0755"
      owner: root
      group: root
      backup: yes

  - name: 更改profile
    copy: 'src=/root/ops/init.sh dest=/etc/profile.d/init.sh'

  - name: Selinux dsiable
    lineinfile:
      dest: /etc/selinux/config
      regexp: '^SELINUX='
      line: 'SELINUX=disabled'

  - name: Selinux stop
    selinux: state=disabled

  - name: Firewalld disable
    service: name=firewalld state=stopped enabled=no
    ignore_errors: true



#  - name: mkdir  back 
#    shell: 'if [ ! -d /etc/yum.repos.d/back ];then mkdir /etc/yum.repos.d/back -p;fi'
#    ignore_errors: true

#  - name:  back .repos
#    shell: 'cd /etc/yum.repos.d/ && mv *.repo back/'
#    ignore_errors: true

#  - name: copy local.repo 
#    copy: 'src=/root/ops/local.repo dest=/etc/yum.repos.d/local.repo'
#    ignore_errors: true

#  - name: cleal
#    shell: yum clean all
#    ignore_errors: true

  #- name: Basicinstall
  #  yum: 
  #    name: 'epel-release'
  #    state: installed
  #    update_cache: yes
  #  ignore_errors: true
  - name: Basicinstall
    yum: 
      name: ['net-tools','zip', 'lrzsz','nethogs', 'tree', 'wget', 'telnet', 'iotop', 'vim','rkhunter','cronolog','epel-release','htop','mlocate']
      state: installed
      update_cache: yes
    ignore_errors: true

########Ulimit Init########
  - name: Ulimit change
    shell: ulimit -SHn 1000000

  - name: Ulimit change rc.local
    lineinfile:
      dest: /etc/rc.local
      regexp: 'ulimit -SHn 1000000'
      backrefs: no
      line: 'ulimit -SHn 1000000'

  - name: Change limits.conf soft
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: '\* soft nofile [0-9]+'
      backrefs: no
      line: '* soft nofile 1000000'

  - name: Change limits.conf hard
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: '\* hard nofile [0-9]+'
      backrefs: no
      line: '* hard nofile 1000000'

  - name: Change system.conf DefaultLimitCORE
    lineinfile:
      dest: /etc/systemd/system.conf
      regexp: 'DefaultLimitCORE'
      backrefs: no
      line: 'DefaultLimitCORE=infinity'

  - name: Change system.conf DefaultLimitNOFILE
    lineinfile:
      dest: /etc/systemd/system.conf
      regexp: 'DefaultLimitNOFILE'
      backrefs: no
      line: 'DefaultLimitNOFILE=1000000'

  - name: Change system.conf 
    lineinfile:
      dest: /etc/systemd/system.conf
      regexp: 'DefaultLimitNPROC'
      backrefs: no
      line: 'DefaultLimitNPROC=1000000'

########Create Directory########
  - name: Create Directory
    file: path={{ item }} state=directory
    with_items:
      - /data/
      - /data/deploy/
      - /data/logs/
      - /data/soft/
      - /data/scripts/
      - /data/files/
      - /data/logs/check/

########rc-local########
  - service: name=rc-local enabled=yes state=restarted
    tags: rc-local

  - name: /etc/rc.d/rc.local
    file: 'path=/etc/rc.d/rc.local mode=0755'
    tags: rc-local

########添加DNS#######
  - name: 更改ifcfg-eth0
    lineinfile:
      dest: /etc/sysconfig/network-scripts/ifcfg-eth0
      line: "PEERDNS=yes"
    ignore_errors: true
  - name: 更改ifcfg-eth0
    lineinfile:
      dest: /etc/sysconfig/network-scripts/ifcfg-eth0
      line: 'DNS1=172.63.251.171'
    ignore_errors: true

  - name: 更改ifcfg-ens5
    lineinfile:
      dest: /etc/sysconfig/network-scripts/ifcfg-ens5
      line: "PEERDNS=yes"
    ignore_errors: true
  - name: 更改ifcfg-ens5
    lineinfile:
      dest: /etc/sysconfig/network-scripts/ifcfg-ens5
      line: 'DNS1=172.63.251.171'
    ignore_errors: true

  - name: 更改resolv.conf
    lineinfile:
      dest: /etc/resolv.conf
      regexp: '^nameserver'
      backrefs: yes
      line: 'nameserver 172.63.251.171'

  - name: 更改cloud.cfg
    lineinfile:
      dest: /etc/cloud/cloud.cfg
      insertbefore: '^# vim:syntax=yaml'
      line: 'network:'
    ignore_errors: true

  - name: 更改cloud.cfg2
    lineinfile:
      dest: /etc/cloud/cloud.cfg
      insertbefore: '^# vim:syntax=yaml'
      line: '  config: disabled' 
    ignore_errors: true

########时区#######
  - name: 修改时区
    shell: 'timedatectl set-timezone Asia/Shanghai && timedatectl set-ntp yes'

  - name: Restart crond
    service: name=crond state=restarted enabled=yes

  - name: Restart rsyslog
    service: name=rsyslog state=restarted enabled=yes

  - name: sysctl.conf
    copy: 
      src: /root/ops/sysctl.conf
      dest: /etc/sysctl.conf
      mode: "0644"
      owner: root
      group: root
  - name: sysctl.conf
    shell: 'sysctl -p'

#安装prometheus node
  - name: 新建prometheus组
    group:
      name: prometheus
      state: present
    tags: adduser
    tags: prometheus
  - name: 新建prometheus用户
    user:
      name: prometheus
      create_home: false
      shell: /sbin/nologin
      groups: prometheus
    tags: adduser
    tags: prometheus
  - name: copy node文件
    get_url: 'url=http://172.63.251.171:81/tools/node_exporter dest=/usr/local/bin/node_exporter mode=0755 '
   #synchronize: "src=/root/ops/prometheus/node_exporter dest=/usr/local/bin/node_exporter perms=yes rsync_timeout=2"
    tags: prometheus
  - name: copy node脚本
    copy: 'src=/root/ops/prometheus/node-exporter.service dest=/lib/systemd/system/node-exporter.service'
    tags: prometheus
  - name: 启动prometheus node
    service: name=node-exporter state=restarted enabled=yes
    tags: prometheus

#jdk
  - name: jdk
    unarchive: 'src=http://172.63.251.171:81/tools/jdk-8u251-linux-x64.tar.gz dest=/usr/local copy=no'
    tags: jdk
  - name: create links
    file: src=/usr/local/jdk1.8.0_251 dest=/usr/local/java state=link
    tags: jdk
  - name: java_profile config
    shell: /bin/echo {{ item }} >> /etc/profile
    with_items:
        - export JAVA_HOME=/usr/local/java
        - export JRE_HOME=/usr/local/java/jre
        - export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:\$JRE_HOME/lib:\$CLASSPATH
        - export PATH=\$JAVA_HOME/bin:\$PATH
    tags: jdk
  - name: take effect
    shell: source /etc/profile
    tags: jdk

  - name: sync config
    synchronize:
       src: /root/work/promtail-loki/ 
       dest: /data/soft/promtail/
       mode: push
  - name: copy service
    copy:
       src: /root/work/promtail-loki/promtail-linux-amd64.service
       dest: /lib/systemd/system/promtail-linux-amd64.service
  - name: reload
    shell: systemctl daemon-reload
  - name: start
    shell: systemctl start promtail-linux-amd64.service
  - name: enable 
    shell: systemctl enable promtail-linux-amd64.service
  - name: start promtail-linux-amd64
    shell: "nohup /data/soft/promtail/promtail-linux-amd64 --config.file=/data/soft/promtail/config.yaml >/dev/null 2>&1 &"

#传输jmx
  - name: 传输jmx
    synchronize: "src=/data/jmx dest=/data/ perms=yes rsync_timeout=2"

#每日巡检
  - name: copy检查脚本
    copy: 'src=/root/ops/scripts/check.sh dest=/data/scripts/check.sh'
  - name: 检查脚本-定时任务
    cron: 'name=check minute=30 hour=23 job="sh /data/scripts/check.sh > /data/logs/check/check-`date +"\%F"`.log"'
  - name: 定时清理日志
    cron: 'name=del-java-log minute=5 hour=0 job="find /data/deploy/*/*log*/ -type f \( -iname "*.zip" -o -iname "*.out" -o -iname "*.log" -o -iname "*.txt" \) -a -mtime +1|xargs rm -f"'

  - name: 定时清理日志
    cron: 'name=del-java-log minute=5 hour=0 state=present job="find /data/deploy/*/*log*/ -type f \( -iname "*.zip" -o -iname "*.out" -o -iname "*.log" -o -iname "*.txt" \) -a -mtime +3|xargs rm -rf"'
  - name: sync time
    cron:
      name: 时间同步任务
      minute: "*/5"
      hour: "*"
      day: "*"
      month: "*"
      weekday: "*"
      job: /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
      #state: absent  # start/absent/present
      state: present  # start/absent/present


  - name: reboot
    reboot:
    tags: reboot

ubuntu系统

---
- hosts: "{{host}}"
  gather_facts: no
  user: ubuntu
  become: yes
  become_user: root
  become_method: sudo
  tasks:
  - name: 替换key
    copy:
      src: "/root/ops/prod-authorized_keys"
      dest: "/root/.ssh/authorized_keys"
      mode: "0755"
      owner: root
      group: root
      backup: yes

  - name: Disable ufw
    ufw: state=disabled

  - name: Basicinstall
    apt: 
      name: ['net-tools','zip', 'lrzsz','nethogs', 'tree', 'wget', 'telnet', 'iotop', 'vim','rkhunter']
      state: present
      update_cache: yes
    ignore_errors: true

########Ulimit Init########
  - name: Ulimit change
    shell: ulimit -SHn 1000000

  - name: Change limits.conf soft
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: '\* soft nofile [0-9]+'
      backrefs: no
      line: '* soft nofile 1000000'

  - name: Change limits.conf hard
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: '\* hard nofile [0-9]+'
      backrefs: no
      line: '* hard nofile 1000000'

  - name: Change limits.conf hard
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: '\* soft nproc [0-9]+'
      backrefs: no
      line: '* soft nproc 1000000'

  - name: Change limits.conf hard
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: '\* hard nproc [0-9]+'
      backrefs: no
      line: '* hard nproc 1000000'

  - name: Change limits.conf soft
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: 'root soft nofile [0-9]+'
      backrefs: no
      line: 'root soft nofile 1000000'

  - name: Change limits.conf hard
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: 'root hard nofile [0-9]+'
      backrefs: no
      line: 'root hard nofile 1000000'

  - name: Change limits.conf hard
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: 'root soft nproc [0-9]+'
      backrefs: no
      line: 'root soft nproc 1000000'

  - name: Change limits.conf hard
    lineinfile:
      dest: /etc/security/limits.conf
      regexp: 'root hard nproc [0-9]+'
      backrefs: no
      line: 'root hard nproc 1000000'

  - name: Change system.conf DefaultLimitCORE
    lineinfile:
      dest: /etc/systemd/system.conf
      regexp: 'DefaultLimitCORE'
      backrefs: no
      line: 'DefaultLimitCORE=infinity'

  - name: Change system.conf DefaultLimitNOFILE
    lineinfile:
      dest: /etc/systemd/system.conf
      regexp: 'DefaultLimitNOFILE'
      backrefs: no
      line: 'DefaultLimitNOFILE=1000000'

  - name: Change system.conf 
    lineinfile:
      dest: /etc/systemd/system.conf
      regexp: 'DefaultLimitNPROC'
      backrefs: no
      line: 'DefaultLimitNPROC=1000000'

########Create Directory########
  - name: Create Directory
    file: path={{ item }} state=directory
    with_items:
      - /data/
      - /data/deploy/
      - /data/logs/
      - /data/soft/
      - /data/scripts/
      - /data/files/
      - /data/logs/check/

########添加DNS#######
  - name: DNS
    lineinfile:
      dest: /etc/systemd/resolved.conf
      line: 'DNS=172.63.251.171'
    tags: dns

########时区#######
  - name: 修改时区
    shell: 'timedatectl set-timezone Asia/Shanghai && timedatectl set-ntp yes'

  - name: Restart cron
    service: name=cron state=restarted enabled=yes

  - name: Restart rsyslog
    service: name=rsyslog state=restarted enabled=yes

  - name: sysctl.conf
    copy: 
      src: /root/ops/sysctl.conf
      dest: /etc/sysctl.conf
      mode: "0644"
      owner: root
      group: root
  #- name: sysctl.conf
  #  shell: 'sysctl -p'

#安装prometheus node
  - name: 新建prometheus组
    group:
      name: prometheus
      state: present
    tags: prometheus
  - name: 新建prometheus用户
    user:
      name: prometheus
      create_home: false
      shell: /sbin/nologin
      groups: prometheus
    tags: prometheus
  - name: copy node文件
    get_url: 'url=http://172.63.251.171:81/tools/node_exporter dest=/usr/local/bin/node_exporter mode=0755 '
   #synchronize: "src=/root/ops/prometheus/node_exporter dest=/usr/local/bin/node_exporter perms=yes rsync_timeout=2"
    tags: prometheus
  - name: copy node脚本
    copy: 'src=/root/ops/prometheus/node-exporter.service dest=/lib/systemd/system/node-exporter.service'
    tags: prometheus
  - name: 启动prometheus node
    service: name=node-exporter state=restarted enabled=yes
    tags: prometheus

#jdk
  - name: jdk
    unarchive: 'src=http://172.63.251.171:81/tools/jdk-8u251-linux-x64.tar.gz dest=/usr/local copy=no'
    tags: jdk
  - name: create links
    file: src=/usr/local/jdk1.8.0_251 dest=/usr/local/java state=link
    tags: jdk
  - name: java_profile config
    shell: /bin/echo {{ item }} >> /etc/profile
    with_items:
        - export JAVA_HOME=/usr/local/java
        - export JRE_HOME=/usr/local/java/jre
        - export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:\$JRE_HOME/lib:\$CLASSPATH
        - export PATH=\$JAVA_HOME/bin:\$PATH
    tags: jdk
#  - name: take effect
#    shell: source /etc/profile
#    tags: jdk

#传输jmx
  - name: 传输jmx
    synchronize: "src=/data/jmx dest=/data/ perms=yes rsync_timeout=2"

#每日巡检
  - name: copy检查脚本
    copy: 'src=/root/ops/scripts/check.sh dest=/data/scripts/check.sh'
  - name: 检查脚本-定时任务
    cron: 'name=check minute=30 hour=23 job="sh /data/scripts/check.sh > /data/logs/check/check-`date +"\%F"`.log"'

  - name: reboot
    reboot:
    tags: reboot

更多推荐