Browse Source

Upload files to ''

master
anastasia_petr 3 years ago
parent
commit
ec00bd5440
  1. 97
      ascii.adoc
  2. 15
      fluentd-config-update.yml.sh
  3. 54
      fluentd-test-mongo.yml
  4. 199
      fluentd.yml
  5. 25
      fluentd.yml.sh

97
ascii.adoc

@ -0,0 +1,97 @@
= Εργασία Εξαμήνου Υπολογιστική Νέφους και Υπηρεσίες
Ομάδα Γουργολίτσα Αικατερίνη Α.Μ. :171193
Πετρίδου Αναστασία Α.Μ. :47431
:toc: right
:toc-title: Πίνακας περιεχομένων
:toclevels: 4
:icons: font
:tabs:
.*ΕΙΣΑΓΩΓΗ* +
Αρχικά επιλέξαμε να ασχοληθούμε με το project "Data collector service" το οποίο χωρίζεται σε 3 ενότητες.
Επιλέγουμε ένα hybrid-linux εργατήριο και σηκώνουμε 5 μηχανάκια.
image:images/1.png[] +
Μετα, επιλέγουμε την ansible τεχνολογία και με μια ssh σύνδεση θα μπορέσουμε να διαχειριστούμε τα υπόλοιπα μέλη.
Όταν σηκωθούν τα μηχανάκια πηγαίνουμε στον container επιλέγουμε τον Master και κάνουμε connect.(παίρνουμε την εντολή που βγάζει και την τρέχουμε στο τέρμιναλ .Στην συνέχεια τρέχουμε την εντολή
----
ifconfig
----
image:images/2.png[] +
Βλέπουμε τα μέλη με την εντολή
----
./bin/swarmlab-nmap
----
image:images/3.png[] +
Στην συνέχεια μπαίνουμε στους φακέλους όπου βρίσκονται τα αρχεία.
----
cd courses
cd fluentd
----
Στο αρχείο fluentd.yml.sh εγκαθιστούμε το ansible και βρίσκουμε την τοπική ip.
Στο αρχείο fluentd.yml βάζουμε αρχικά τον χρήστη docker και στην συνέχεια έχουμε τα tasks.Στο πρώτο θέμα κάνουμε το update.Στο επόμενο κάνουμε install ορισμένα πακέτα όπως το curl ,το git το ruby κ.α.Το επόμενο Block φτιάχνει έναν κατάλογο απομακρυσμένο.Στο επόμενο γίνεται η εγκατάσταση του fluentd μέσω του gem.Στο αρχείο fluentd-test-mongo.yml δοκιμάζουμε την mongo εκτελώντας την εντολή df -h σε όλους τους hosts του swarm.Το fluentd-test-mongo.yml.sh βρίσκει τις ips του swarm, θα ανανεώσει το inventory.yml .Στο αρχείο fluentd-test-mongo-free.yml.sh βρίσκουμε τις ip .Το fluentd-test-mongo-free.yml.sh που βρίσκει τις ips του swarm και ανανεώνει το inventory.yml .Στο αρχείο inventory.yml βρίσκονται διευθύνσεις IP όλων των hosts του swarm.
/files βρίσκονται τα configuration files της ansible και του fluent.Τέλος,βάζουμε σε λειτουργία το fuentd (#start fluentd).
.Αυτόματη εγκατάσταση προγράμματος για την συλλογή των δεδομένων
Έπειτα θα βάλουμε σε όλα τα μηχανάκια το fluentd και οτιδήποτε συμβαίνει θα μεταφέρεται σε ένα κεντρικό σημείο και έτσι θα συλλέγουμε τα δεδομένα.
Τρέχουμε την εντολή για να εγκαταστησουμε ansible και το fluentd .Κωδικός docker.
----
./fluentd.yml.sh
----
image:images/5.png[] +
image:images/9.png[] +
Στην συνέχεια συνδέομαστε σε ένα μηχανάκι με την εντολή
----
ssh docker @172.21.0.2
----
image:images/10.png[] +
κι διαπυστώνουμε οτι λειτουργεί το fluentd με την εντολή: ps aux
image:images/11.png[] +
Ετσι φτιαξάμε την βασική μας λειτουργία και στην συνέχεια θα σηκώσουμε μια υπηρεσία nodejs που μεταδίδεται από το Master. Εγκαθιστούμε το application με την εντολή
----
./app.js.sh
----
βρισκουμε την ip και παρατηρούμε οτι συνδέεται στην πόρτα 8000 με τις παρακάτω εντολές
----
ifconfig
node app.sh
----
image:images/12.png[] +
Μέτα εφάρμοζουμε την παράκατω εντολή βάζοντας ενα τυχαίο μήνυμα ώστε να διαπιστώσουμε οτι επικοινώνουν μεταξύ τους
----
curl http://172.21.0.2:8000/?log=HelloWorld
curl http://172.21.0.2:8000/?log=HelloWorldByeee
----
image:images/13.png[] +
image:images/14.png[] +
image:images/15.png[] +

15
fluentd-config-update.yml.sh

@ -0,0 +1,15 @@
#!/bin/sh
ip4=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)
ip6=$(/sbin/ip -o -6 addr list eth0 | awk '{print $4}' | cut -d/ -f1)
echo "[service]" > /project/courses/fluentd/inventory.yml
/project/bin/swarmlab-nmap >> /project/courses/fluentd/inventory.yml
# include master or not
echo $ip4 >> /project/courses/fluentd/inventory.yml
ansible-playbook -u docker -i inventory.yml fluentd-config-update.yml -f 5 --ask-pass --ask-become-pass

54
fluentd-test-mongo.yml

@ -0,0 +1,54 @@
---
- hosts: service
remote_user: docker
gather_facts: no
vars:
user: "docker"
tasks:
# --------------------------------------------------------------------------------------
# --------------------- create test dir
# --------------------------------------------------------------------------------------
# ------------------------
# test dir
# -------------------------
- name: make dir for test
become: true
file:
path: "/var/log-in/test"
state: directory
owner: docker
group: docker
mode: '0755'
- name: make dir2
become: true
file:
path: "/var/log-in/test1"
state: directory
owner: docker
group: docker
mode: '0755'
# --------------------------------------------------------------------------------------
# --------------------- kill and save ps tp tmp
# --------------------------------------------------------------------------------------
- name: find fluentd
#shell: df -h >> /var/log-in/test/test
shell: df -h
#shell: "ps efw -opid,cmd -Cfluentd | pgrep -o fluentd"
register: fluentddate
- name: ls fluentddate
debug: var=fluentddate.stdout_lines
- name: write to /var/log-in/test/test2
shell: "echo {{ item }} >> /var/log-in/test/test2"
with_items: "{{ fluentddate.stdout_lines }}"
- name: write to /var/log-in/test1/test11
shell: "echo {{ item }} >> /var/log-in/test1/test11"
with_items: "{{ fluentddate.stdout_lines }}"

199
fluentd.yml

@ -0,0 +1,199 @@
---
- hosts: service
remote_user: docker
gather_facts: no
vars:
user: "docker"
tasks:
# ------------------------
# apt update
# -------------------------
- name: apt update packages
become: true
apt:
update_cache: 'yes'
force_apt_get: 'yes'
upgrade: 'dist'
cache_valid_time: 3600
install_recommends: true
autoremove: true
# ------------------------
# apt install packages
# -------------------------
- name: apt install packages
become: true
apt:
update_cache: 'yes'
force_apt_get: 'yes'
install_recommends: true
autoremove: true
name: "{{ packages }}"
vars:
packages:
- build-essential
- git
- flex
- bison
- traceroute
- curl
- lynx
- ruby
- ruby-dev
# ------------------------
# directory4example fluentd
# -------------------------
- name: make /var/log-in
become: true
file:
path: "/var/log-in"
state: directory
owner: docker
group: docker
mode: '0777'
# ------------------------
# gem begin
# -------------------------
- name: make dir for gem
become: true
file:
path: "/home/docker/.gem"
state: directory
owner: docker
group: docker
mode: '0755'
- name: gem install fluentd
#become: true
gem:
name: fluentd
version: 1.12.0
state: present
environment:
CONFIGURE_OPTS: '--disable-install-doc'
PATH: '/home/docker/.gem/ruby/2.5.0/bin:{{ ansible_env.PATH }}'
- name: gem install fluent-plugin-mongo
#become: true
gem:
name: fluent-plugin-mongo
state: present
- name: gem install oj
#become: true
gem:
name: oj
state: present
- name: gem install json
#become: true
gem:
name: json
state: present
- name: gem install async-http
#become: true
gem:
name: async-http
version: 0.54.0
state: present
- name: gem install ext-monitor
#become: true
gem:
name: ext_monitor
version: 0.1.2
state: present
# ------------------------
# gem end
# -------------------------
# ------------------------
# add group
# -------------------------
# - name: add group fluent
# become: true
# group:
# name: fluent
# state: present
#
# ------------------------
# add user
# -------------------------
# - name: add user gem
# become: true
# user:
# name: fluent
# group: fluent
# ------------------------
# mkdir directory4 fluent
# -------------------------
- name: make dir fluentd
become: true
file:
path: "/fluentd/etc"
state: directory
owner: docker
group: docker
mode: '0755'
- name: make dir fluentd
become: true
file:
path: "/fluentd/plugins"
state: directory
owner: docker
group: docker
mode: '0755'
# ------------------------
# cp fluentd.conf
# -------------------------
- name: cp fluentd.conf
become: true
copy:
src: "./files/fluent.conf"
dest: /fluentd/etc/fluent.conf
owner: docker
group: docker
mode: 0755
# ------------------------
# start fluentd
# -------------------------
- name: start fluentd background
shell: nohup /home/docker/.gem/ruby/2.5.0/bin/fluentd -c /fluentd/etc/fluent.conf -vv </dev/null >/dev/null 2>&1 &
# ------------------------
# example4net tcpdump example
# -------------------------
# - name: google.com
# become: yes
# become_user: "{{ user }}"
# command: curl http://www.google.com
# ignore_errors: yes
# register: configwww
#
# - name: ls configwww
# debug: var=configwww.stdout_lines
#
# - name: ls -al /var/lab/playground/playground-readmongo/
# become: yes
# become_user: "{{ user }}"
# #command: ls -al /var/lab/playground/playground-readmongo
# command: netstat -antlupe
# ignore_errors: yes
# register: config
#
# - name: ls config
# debug: var=config.stdout_lines
#
# - name: Refresh connection
# meta: clear_host_errors
#

25
fluentd.yml.sh

@ -0,0 +1,25 @@
#!/bin/sh
sudo apt update -y
sudo apt install -y ansible sshpass
sudo mkdir -p /home/docker/.ansible
sudo chown docker.docker -R /home/docker
sudo cp files/ansible.cfg /etc/ansible/ansible.cfg
ip4=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)
ip6=$(/sbin/ip -o -6 addr list eth0 | awk '{print $4}' | cut -d/ -f1)
echo "[service]" > /project/courses/fluentd/inventory.yml
/project/bin/swarmlab-nmap >> /project/courses/fluentd/inventory.yml
# include master or not
echo $ip4 >> /project/courses/fluentd/inventory.yml
ansible-playbook -u docker -i inventory.yml fluentd.yml -f 5 --ask-pass --ask-become-pass
# 1st make sudo without password
# run with keys
#ansible-playbook -u docker -i inventory.yml fluentd.yml -f 5 --private-key=/home/docker/.ssh/id_rsa
Loading…
Cancel
Save