2. Module 1 : Modern software development .
Module 2 : Component , platforms and cloud deployment .
Module 3 : Source code management
Module 4 : System image creation and VM Deployment .
Module 5 : Container usage .
Module 6 : Container infrastructure .
Module 7 : Container deployment and orchestration .
Module 8 : CI / CD .
Module 9 : Ansible and configuration management tools.
Module 10 : IT monitoring .
Module 11 : Log management and analysis.
Plan
2
3. LPI DevOps Tools Engineers
Module 1
Modern Software Development
3
4. From agile to DevOps .
Test-Driven Development.
Service based applications.
Micro-services architecture .
Application security risks.
Plan
4
5. An interactive approach which focuses on collaboration,customer feedback, and small, rapid releases .
Helps to manage complex projects.
Method can be implemented within a range of tactical frameworks like a sprint, safe and scrum.
Agile development is managed in units of "sprints." This time is much less than a month for each sprint
When the software is developed and released, the agile team will not care what happens to it.
Scrum is most common methods of implementing Agile software development.
Others agile methodologies :
✔ Extreme Programming (XP)
✔ Kanban
✔ Feature-Driven Development (FDD)
From Agile to DevOps : what is Agile
5
7. ● It is focused client process. So, it makes sure that the client is continuously involved during every
stage.
● Agile teams are extremely motivated and self-organized so it likely to provide a better result from the
development projects.
● Agile software development method assures that quality of the development is maintained
● The process is completely based on the incremental progress. Therefore, the client and team know
exactly what is complete and what is not. This reduces risk in the development process.
Advantages of the Agile Model
7
8. ● It allows for departmentalization and managerial control.
● Simple and easy to understand and use.
● Easy to manage due to the rigidity of the model – each phase has specific deliverables and a review
process.
● Phases are processed and completed one at a time.
● Works well for smaller projects where requirements are very well understood.
● A schedule can be set with deadlines for each stage of development and a product can proceed
through the development process like a car in a car-wash, and theoretically, be delivered on time.
Advantages of the Waterfall Model
8
9. It is not useful method for small development projects.
It requires an expert to take important decisions in the meeting.
Cost of implementing an agile method is little more compared to other development methodologies.
The project can easily go off track if the project manager is not clear what outcome he/she wants.
Limitations of Agile Model
9
10. It is not an ideal model for a large size project
If the requirement is not clear at the beginning, it is a less effective method.
Very difficult to move back to makes changes in the previous phases.
The testing process starts once development is over. Hence, it has high chances of bugs to be found later in
development where they are expensive to fix.
Limitations of Waterfall Model
10
11. Agile and Waterfall are very different software development methodologies and are good in their respective
way.
However, there are certain major differences highlighted below Waterfall model is ideal for projects which have
defined requirements, and no changes are expected. On the other hand, Agile is best suited where there is a
higher chance of frequent requirement changes.
The waterfall is easy to manage, sequential, and rigid method.
Agile is very flexible and it possible to make changes in any phase.
In Agile process, requirements can change frequently. However, in a waterfall model, it is defined only once
by the business analyst.
In Agile Description of project, details can be altered anytime during the system development life cycle
“SDLC” process which is not possible in Waterfall method.
Conclusion
11
12. When it comes to improving IT performance in order to give organizations competitive advantages, we need a new
way of thinking, a new way of working that improve all the production and management processes and operations
from the team or project level to the organizational level while encouraging collaboration between all the individuals
involved for fast delivery of valuable products and services.
For this reason, a new culture, corporate philosophy and way of working is emerging. This way of working
integrates agile methods, lean principles and practices, social psychological beliefs for motivating workers, systems
thinking for building complex systems, continuous integration and continuous improvement of IT products and
services for satisfying both customers and production and development teams. This new way of working is DevOps.
Transforming IT service delivery with DevOps by using Agile
12
13. ● Adam Jacobs in a presentation defined DevOps as “a cultural and professional movement, focused on how we build
and operate high velocity organizations, born from the experiences of its practitioners”. This guru of DevOps also
states that DevOps is reinventing the way we run our businesses. Moreover, he argue that DevOps is not the same
but unique to the people who have practiced it (Jacobs, 2015).
● Gartner analysts declare that DevOps “ is a culture shift designed to improve quality of solutions that are
business-oriented and rapidly evolving and can be easily molded to today’s needs” (Wurster, et al., 2013).
Thus, DevOps is a movement that integrates different ways of thinking and different ways of working for transforming
organizations by improving IT services and products delivery.
What’s DevOps
13
14. We cannot talk about DevOps in a corporate environment without integrating a set of principles
and practices that make development and operations teams work together. For this reason,
Garter analysts support that DevOps takes into account several commonly agreed practices
which form the fundamentals of DevOps practices. These practices are (Wurster, et al., 2013):
Cross-functional teams and skills
Continuous delivery :DevOps strives for deadlines and benchmarks with major releases. The
ideal goal is to deliver code to production DAILY or every few hours.
Continuous assessment :Feedback comes from the internal team
Optimum utilization of tool-sets
Automated deployment pipeline
It's essential for the operational team to fully understand the software release and its
hardware/network implications for adequately running the deployment process.
How to successfully integrate DevOps culture in an organization
14
15. 1. Continuous Business Planning
This starts with identifying the skills, outcomes, and resources needed.
2. Collaborative Development
This starts with development sketch plan and programming.
3. Continuous Testing
Unit and integration testing help increase the efficiency and speed of the development.
4. Continuous Release and Deployment
A nonstop CD pipeline will help you implement code reviews and developer check-ins easily.
5. Continuous Monitoring
This is needed to monitor changes and address errors and mistakes spontaneously whenever they
happen.
6. Customer Feedback and Optimization
This allows for an immediate response from your customers for your product and its features and
helps you modify accordingly.
Here are the 6 Cs of DevOps
15
16. Taking care of these six stages will make you a good DevOps organization. This is not a
must-have model but it is one of the more sophisticated models. This will give you a fair idea
on the tools to use at different stages to make this process more lucrative for a software-
powered organization.
CD pipelines, CI tools, and containers make things easy. When you want to practice DevOps,
having a microservices architecture makes more sense.
Here are the 6 Cs of DevOps
16
17. ● Agile
✔ Software development method emphasis on iterative, incremental, and evolutionary development.
✔ Iterative approach which focuses on collaboration, customer feedback, and small,
rapid releases.
✔ Priority to the working system over complete documentation
● DevOps
✔ Software development method focuses on communication, integration, and
collaboration among IT professionals.
✔ Practice of bringing development and operations teams together.
✔ Process documentation is foremost : it will send the software to the operational
team for deployment.
DevOps is a culture, it's an agile's extension
Conclusion
17
18. What is TDD ?
Test-driven development is a software development process that relies on the repetition of a very short
development cycle: requirements are turned into very specific test cases, then the software is improved so
that the tests pass.
● It refers to a style of programming in which three activities are nested:
✔ Coding.
✔ Testing (in the form of writing unit tests).
✔ Refactoring
18
19. TDD cycles
● Write a "single" unit test describing an aspect of the program.
● Run the test, which should fail because the program lacks that feature.
● Write "just enough" code, the simplest possible, to make the test pass.
● "refactor" the code until it conforms to the simplicity criteria.
● Repeat, "accumulating" unit tests over time
19
21. Service based applications
Application architecture
Why does application architecture matter?
● Build a product can scale.
● To distribute.
● Helps with speed to market
Application architectures:
● Monolithic Architecture
● SOA Architecture
● Microservices Architecture
21
22. Service based applications:Monolithic architecture
● Synonymous with n-Tier applications.
● Separate concerns and decompose code base into functional components.
● Building a single web artifact and then trying to decompose the application into layers.
✔ Presentation Layer
✔ Business Logic Layer
✔ Data Access Layer.
● Massive coupling issues :
✔ Every time you have to build, test, or deploy.
✔ Infrastructure costs : add resources for the entire application to single code scaling.
✔ Bad performing part of your software architecture can bring the entire
✔ structure down
22
23. Service based applications: SOA architecture
● Service-based architecture
● Decouple your application in smaller modules.
● Good way of decoupling and communication.
● Separates the internal and external elements of the system.
● All the services would then work with an aggregation layer that can be termed as a bus.
➔ As SOA Bus got bigger and bigger with more and more
components added to the system issues of system coupling.⇒ issues of system coupling.
23
24. Service based applications:Micro-services architecture
● Evolution to the limitation of the SOA architecture.
● Decoupling or decomposition of the system into discrete work units.
● Use business cases, hierarchical, or domain separation to define each micro-service.
● Can use different languages or frameworks to work together.
● All the communication between the services in over REST over HTTP.
● Also renders itself well suited for the cloud-native deployment.
➢ https://microservices.io/
➢ https://rubygarage.org/blog/monolith-soa-microservices-serverless
24
26. Restful API
What is an API ?
● Application Program Interface
● APIs are everywhere
● Contract provided by one piece of software to another
● Structured request and response
26
27. Restful API
What is an REST ?
● Representational State Transfer.
● Architecture style for designing networked applications.
● Relies on a stateless, client-server protocol, almost always HTTP.
● Treats server objects as resources that can be created or destroyed.
● Can be used by virtually any programming language.
27
28. Restful API
REST Methods
● https://www.restapitutorial.com/lessons/httpmethods.html
● GET : Retrieve data from a specified resource
● POST : Submit data to be processed to a specific resource.
● PUT : Update a specified resource
● DELETE : Delete a specified resource
● HEAD : Same as GET but does not return a body
● OPTIONS : Returns the supported HTTP methods
● PATCH : Update partial resources
28
29. Restful API
REST Endpoint :
● The URI/URL where API/service can be accessed by a client application
HTTP code status :
● https://www.restapitutorial.com/httpstatuscodes.html
Authentication
● Some API’s require authentication to use their service. This could be free or paid
Demo: REST API demo created by using GO.
29
30. Restful API : what’s JSON
● JSON : JavaScript Object Notation
● A lightweight data-interchange format
● Easy for humans to read and write
● Easy for machines to parse and generate.
● Responses from the server should be always in
● JSON format and consistent.
● Always contain meta information and, optionally, data
30
32. Application security risks
How to prevent attacks ?
● Using special database features to separate commands from data.
● Authentication without passwords ( cryptography private keys, bio-metrics, smart card, etc ...)
● Using the Cross-Origin Resource Sharing (CORS) headers to prevent Cross-site request forgery “CSRF”
● Avoid using redirects and forwards whenever possible. At least prevent users from affecting the destination.
32
33. Application security risks
CORS headers and CSRF tokens
● CSRF allows an attacker to make unauthorized requests on behalf of an authenticated user.
● Commands are sent from the user's browser to a web site or a web application.
● CORS handles this vulnerability well : disallows the retrieval and inspection of data from another Origin
(While allowing some cross-origin access)
● It prevent the third-party JavaScript from reading data out of the image, and will fail AJAX requests with
a security error.
“XMLHttpRequest cannot load https://app.mixmax.com/api/foo. No
'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://evil.example.com' is therefore not allowed
access.”
33
35. PLAN
● Data platforms and concepts
● Message brokers and queues
● Paas platforms
● OpenStack
● Cloud-init
● Content Delivery Networks
35
36. Data platforms and concepts
Relational database
● Based on the relational model of data.
● Relational database systems use SQL.
● Relational model organizes data into one or more tables.
● Each row in a table has its own unique key (primary key).
● Rows in a table can be linked to rows in other tables by adding a foreign keys.
● MySQL (MariaDB), Oracle, Postgres, IBM DB2 etc ...
36
37. Data platforms and concepts
NoSQL database
● Mechanism for storage and retrieval of data other than the tabular relations used in relational databases.
● Increasingly used in big data and real-time web applications
● Properties :
✔ Simplicity of design
✔ Simpler scaling to clusters of machines (problem for relational
✔ databases)
✔ Finer control over availability.
✔ Some operations faster (than relational DB)
● Various ways to classify NoSQL databases :
✔ Document Store : MongoDB, etc ...
✔ Key-Value Cache : Memcached, Redis, etc ...
37
40. Data platforms and concepts
Object storage
● Manages data as objects
● Opposed to other storage architectures :
✔ File systems : manages data as a file hierarchy
✔ Block storage : manages data as blocks
✔ Watch Block storage vs file storage
● Each object typically includes :
✔ The data itself,
✔ Metadata (additional information)
✔ A globally unique identifier.
● can be implemented at multiple levels :
● Device level (SCSI device, etc ...)
● System level (used by some distributed file systems)
● Cloud level (Openstack swift, AWS S3, Google Cloud Storage)
40
41. Data platforms and concepts
CAP theorem
● CAP : Consistency, Availability and Partition-tolerance.
● It is impossible for a distributed data store to simultaneously provide more than two out of the three
guarantees :
✔ Consistency : Receive the same information, regardless the node that process the order.
✔ Availability : the system provides answers for all requests it receives, even if one or more nodes are
down.
✔ Partition-tolerance : the system still Works even though it has been divided by a network failure.
41
42. Data platforms and concepts
ACID properties :
● ACID : Atomicity, Consistency, Isolation and Durability
● Set of properties of database transactions intended to guarantee validity even in the event of errors, power
failures, etc ...
✔ Atomicity : each transaction is treated as a single "unit", which either succeeds completely, or fails
completely.
✔ Consistency (integrity): Ensures that a transaction can only bring the database from one valid state to
another, maintaining database invariant ( only starts what can be finished).
✔ Isolation: two or more transactions made at the same time must be independent and do not affect each
other.
✔ Durability: If a transaction is successful, it will persist in the system (recorded in non-volatile memory)
42
43. Message brokers and queues
Message brokers
● A message broker acts as an intermediary platform when it comes to processing communication between two
applications.
● An architectural pattern for message validation, transformation, and routing.
● Take incoming messages from applications and perform some action on them :
✔ Divide the publisher and consumer
✔ Store the messages
✔ Route messages
✔ Check and organize messages
● Two fundamental architectures:
✔ Hub-and-spoke
✔ Message bus.
● Examples of message broker software:
AWS SQS, RabbitMQ, Apache Kafka, ActiveMQ, Openstack Zaqar, Jboss Messaging, ...
43
44. Message brokers and queues
Message brokers
● Actions handled by broker :
✔ Manage a message queue for multiple receivers.
✔ Route messages to one or more destinations.
✔ Transform messages to an alternative representation.
✔ Perform message aggregation, decomposing messages into multiple messages and sending them
to their destination, then recomposing the responses into one message to return to the user.
✔ Respond to events or errors.
44
47. PaaS Platforms : CloudFoundry
● Open source PaaS governed by the Cloud Foundry Foundation.
● Promoted for continuous delivery : supports the full application development life cycle (from
initial development through all testing stages to deployment)
● Container-based architecture : runs apps in any programming language over a variety of cloud
service providers.
● platform is available from either the Cloud Foundry Foundation as open-source software or from
a variety of commercial providers as either a software product or delivered as a service.
● In a platform, all external dependencies (databases,messaging systems, files systems, etc ...) are
considered services.
47 47
48. PaaS Platforms : OpenShift
● Open source cloud PaaS developed by Red Hat.
● Used to create, test, and run applications, and finally deploy them on cloud.
● Capable of managing applications written in different languages (Node.js, Ruby, Python, Perl,
and Java).
● It is extensible : helps the users support the application written in other languages).
● It comes with various concepts of virtualization as its abstraction layer:
✔ Uses an hyper-visor to abstract the layer from the underlying hardware.
48 48
49. PaaS Platforms : Openstack
● free and open-source software platform for cloud computing, mostly deployed as IaaS.
● virtual servers and other resources are made available to customers
● interrelated components that control diverse, multi-vendor hardware pools of processing, storage,
and networking resources throughout a data center.
● Managed through a web-based dashboard, command-line tools, or RESTful API.
● Latest release : Stein / 10 April 2019; 3 months ago.
● OpenStack Component : Compute(Nova) , Image Service (Glance) , Object Storage(Swift)
Block Storage(Cinder) ,Messaging Service (Zaqar), Dashboard(Horizon) , Networking(Neutron) ...
● OpenStack Components
49
51. Cloud Init : what’s cloud init ?
● Cloud-init allows you to customize a new server installation during its deployment using data
supplied in YAML configuration files.
● Supported user data formats:
✔ Shell scripts (starts with #!)
✔ Cloud config files (starts with #cloud-config)*
✔ Etc ...
● Modular and highly configurable.
51
52. Cloud Init : Modules
● cloud-init has modules for handling:
✔ Disk configuration
✔ Command execution
✔ Creating users and groups
✔ Package management
✔ Writing content files
✔ Bootstrapping Chef/Puppet/Ansible
● Additional modules can be written in Python if desired.
52
53. Cloud Init : what can do with it ?
● Injects SSH keys.
● Grows root filesystems.
● Setting the hostname.
● Setting the root password.
● Setting locale and time zone.
● Running custom scripts.
● Etc ...
53
55. plan
● Understand Git concepts and repository structure
● Manage files within a Git repository
● Manage branches and tags
● Work with remote repositories and branches as well as sub-modules
● Merge files and branches
● Awareness of SVN and CVS, including concepts of centralized and distributed SCM solutions
55
56. SCM solutions: Version control
● Version control, also known as revision control or source control.
● The management of changes to :
✔ Documents
✔ Computer programs
✔ Large web sites
✔ Other collections of information
● Changes are usually identified by a number or letter code.
Example : revision1, revision2, ...
● Each revision is associated with a timestamp and the person making the change.
● Revisions can be compared, restored, and with some types of files, merged
56
57. SCM solutions: Source Code Management
● SCM – Source Code Management
● SCM involves tracking the modifications to code.
● Tracking modifications assists development and
● colloaboration by :
✔ Providing a running history of development
✔ Helping to resolve conflicts when merging contributions from
multiple sources.
✔ Software tools SCM are sometimes referred to as :
✔ "Source Code Management Systems" (SCMS)
✔ "Version Control Systems" (VCS)
✔ "Revision Control Systems" (RCS)– or simply "code repositories"
57
58. SCM solutions: SCM types
● Two types of version control: centralized and distributed.
● Centralized version control :
✔ Have a single “central” copy of your project on a server.
✔ Commit changes to this central copy
✔ Never have a full copy of project locally
✔ Solutions : CVS, SVN (Subversion)
● Distributed version control
✔ Version control is mirrored on every developer's computer.
✔ Allows branching and merging to be managed automatically.
✔ Ability to work offline (Allows users to work productively when not connected to a network)
✔ Solutions : Git, Mercurial.
58
60. Git concepts and repository structure
● Git is a distributed SCM system.
● Initially designed and developed by Linus Torvalds for Linux kernel development.
● A free software distributed under GNU General Public
● License version 2.
● Advantages :
✔ Free and open source
✔ Fast and small
✔ Implicit backup
✔ Secure : uses SHA1 to name and identify objects.
✔ Easier branching : copy all the codes to new branch
60
62. ● master is for releases only
● Develop Not ready for pubic consumption but compiles and passes all tests
● Feature branches
✔ Where most development happens
✔ Branch off of develop
✔ Merge into develop
● Release branches
✔ Branch off of develop
✔ Merge into master and develop
● Hotfix
✔ Branch off of master
✔ Merge into master and develop
● Bugfix
✔ Branch off of develop
✔ Merge into develop
Git flow manifest
62
63. 1) Enable git flow for the repo
✔ git flow init -d
2) Start the feature branch
✔ git flow feature start newstuff
✔ Creates a new branch called feature/newstuff that branches off of develop
3) Push it to GitHub for the first time
✔ Make changes and commit them locally
✔ git flow feature publish newstuff
4) Additional (normal) commits and pushes as needed
✔ git commit -a
✔ git push
5) Bring it up to date with develop (to minimize big changes on the ensuing pull request)
✔ git checkout develop
✔ git pull origin develop
✔ git checkout feature/newstuff
✔ git merge develop
6) Finish the feature branch (don’t use git flow feature finish)
✔ Do a pull request on GitHub from feature/newstuff to develop
✔ When successfully merged the remote branch will be deleted
✔ git remote update -p
✔ git branch -d feature/newstuff
Source: https://danielkummer.github.io/git-flow-cheatsheet/
Git cycle of a feature branch
63
67. Vagrant
● Create and configure lightweight, reproducible, and portable development environments.
● A higher-level wrapper around virtualization
● software such as VirtualBox, VMware, KVM.
● Wrapper around configuration management software such as Ansible, Chef, Salt, and Puppet.
● Public clouds e.g. AWS, DigitalOcean can be providers too.
67
68. Vagrant : Quick start
● Same steps irrespective of OS and providers :
$ mkdir centos
$ cd centos
$ vagrant init centos/7
$ vagrant up
● OR
$ vagrant up --provider <PROVIDER>
$vagrant ssh
68
69. Vagrant : Command
● Creating a VM
✔ vagrant init -- Initialize Vagrant with a Vagrantfile and ./.vagrant directory, using no specified base image.
Before you can do vagrant up, you'll need to specify a base image in the Vagrantfile.
✔ vagrant init <boxpath> -- Initialize Vagrant with a specific box. To find a box, go to the public Vagrant
box catalog. When you find one you like, just replace it's name with boxpath. For example, vagrant init
ubuntu/trusty64.
69
70. Vagrant : Command
● Starting a VM
✔ vagrant up -- starts vagrant environment (also provisions only on the FIRST vagrant up)
✔ vagrant resume -- resume a suspended machine (vagrant up works just fine for this as well)
✔ vagrant provision -- forces re-provisioning of the vagrant machine
✔ vagrant reload -- restarts vagrant machine, loads new Vagrantfile configuration
✔ vagrant reload --provision -- restart the virtual machine and force provisioning
70
71. Vagrant : Command
● Getting into a VM
✔ vagrant ssh -- connects to machine via SSH
✔ vagrant ssh <boxname> -- If you give your box a name in your Vagrantfile, you can ssh into it with
boxname. Works from any directory.
71
72. Vagrant : Command
● Stopping a VM
✔ vagrant halt -- stops the vagrant machine
✔ vagrant suspend -- suspends a virtual machine (remembers state)
72
73. Vagrant : Command
● Saving Progress
✔ vagrant snapshot save [options] [vm-name] <name> -- vm-name is often default. Allows us to save so that
we can rollback at a later time .
● Tips:
✔ vagrant -v -- get the vagrant version
✔ vagrant status -- outputs status of the vagrant machine
✔ vagrant global-status -- outputs status of all vagrant machines
✔ vagrant global-status --prune -- same as above, but prunes invalid entries
✔ vagrant provision --debug -- use the debug flag to increase the verbosity of the output
✔ vagrant push -- yes, vagrant can be configured to deploy code!
✔ vagrant up --provision | tee provision.log -- Runs vagrant up, forces provisioning and logs all output to a
file
73
74. Vagrant: provionners
● Alright, so we have a virtual machine running a basic copy of Ubuntu and we can edit files from our
machine and have them synced into the virtual machine. Let us now serve those files using a webserver.
● We could just SSH in and install a webserver and be on our way, but then every person who used
Vagrant would have to do the same thing. Instead, Vagrant has built-in support for automated provisioning.
Using this feature, Vagrant will automatically install software when you vagrant up so that the guest
machine can be repeatably created and ready-to-use.
✔ Example 1 : provisioning with Shell : https://www.vagrantup.com/intro/getting-started/provisioning.html
✔ Example 2 : provisioning with Ansible:
https://docs.ansible.com/ansible/latest/scenario_guides/guide_vagrant.html
74
75. Vagrant Box : contents
● A Vagrantbox is a tarred, gzip file containing the following:
✔ Vagrantfile : The information from this will be merged into your Vagrantfile
that is created when you run vagrant init boxname in a folder.
✔ box-disk.vmdk (For Virtualbox) : the virtual machine image.
✔ box.ovf : defines the virtual hardware for the box.
✔ metadata.json :tells vagrant what provider the box works with.
75
76. Vagrantbox : Command
● Boxes
✔ vagrant box list -- see a list of all installed boxes on your computer
✔ vagrant box add <name> <url> -- download a box image to your computer
✔ vagrant box outdated -- check for updates vagrant box update
✔ vagrant boxes remove <name> -- deletes a box from the machine
✔ vagrant package -- packages a running virtualbox env in a reusable box
76
77. Packer : what’s Packer
● Open source tool for creating identical machine images :
✔ for multiple platforms
✔ from a single source configuration.
● Advantages of using Packer :
✔ Fast infrastructure deployment
✔ Multi-provider portability
✔ Stability
✔ Identicality
77
78. Packer : Uses cases
● Continuous Delivery:
Generate new machine images for multiple platforms on every change to Ansible, Puppet or Chef
repositories
● Environment Parity:
Keep all dev/test/prod environments as similar as possible.
● Auto-Scaling acceleration:
Launch completely provisioned and configured instances in seconds, rather than minutes or even hours.
78
79. Packer : Terminology
● The JSON configuration files used to define/describe images.
● Templates are divided into core sections:
✔ variables (optional) : Variables allow you to set API keys and other variable settings without changing the
configuration file
✔ builders (required) : Platform specific building configuration
✔ provisioners (optional) : Tools that install software after the initial OSinstall
✔ post-processors (optional) :Actions to happen after the image has beenbuilt
79
80. Packer : Packer Build Steps
● This varies depending on which builder you use. Thefollowing is an example for the QEMU builder:
1. Download ISO image
2. Create virtual machine
3. Boot virtual machine from the CD
4. Using VNC, type in commands in the installer to start an automated install via kickstart/preseed/etc
5. Packer automatically serves kick-start/pressed file with built-in HTTP server
6. Packer waits for ssh to become available
7. OS installer runs and then reboots
8. Packer connects via ssh to VM and runs provisioner (ifset)
9. Packer Shuts down VM and then runs the post processor (if set)
10. PROFIT!
80
83. Plan
● What is a Container and Why?
● Docker and containers
● Docker command line
● Connect container to Docker networks
● Manage container storage with volumes
● Create Dockerfiles and build images
83
84. What is a Container and Why?
● Advantages of Virtualization
✔ Minimize hardware costs.
✔ Multiple virtual servers on one physical hardware.
✔ Easily move VMs to other data centers.
✔ Conserve power
✔ Free up unused physical resources.
✔ Easier automation.
✔ Simplified provisioning/administration of hardware and software.
✔ Scalability and Flexibility: Multiple operating systems
84
86. What is a Container and Why?
● Problems of Virtualization
● Each VM requires an operating system (OS)
✔ Each OS requires a license.
✔ Each OS has its own compute and storage overhead
✔ Needs maintenance, updates
86
87. What is a Container and Why?
● Solution: Containers
✔ Containers provide a standard way to package your application's code, configurations, and dependencies into
a single object.
✔ Containers share an operating system installed on the server and run as resource-isolated processes,
ensuring quick, reliable, and consistent deployments, regardless of environment.
87
88. ✔Standardized packaging for software and
dependencies
✔Isolate apps from each other
✔Share the same OS kernel
✔Works with all major Linux and Windows Server
What is a Container and Why?
88
90. Community Edition
Enterprise Edition
Open source framework for
assembling core components
that make a container
platform Free, community-supported
product for delivering a
container solution
Subscription-based, commercially
supported products for delivering
a secure software supply chain
Intended for:
Production deployments +
Enterprise customers
Intended for:
Software dev & test
Intended for:
Open source contributors +
ecosystem developers
The Docker Family Tree
90
91. Speed
• No OS to boot =
applications online in
seconds
Portability
• Less dependencies
between process layers
= ability to move
between infrastructure
Efficiency
• Less OS
overhead
• Improved VM
density
Key Benefits of Docker Containers
91
92. Container Solutions & Landscape
Image
The basis of a Docker container. The content at rest.
Container
The image when it is ‘running.’ The standard unit for app service
Engine
The software that executes commands for containers. Networking and volumes are part of
Engine. Can be clustered together.
Registry
Stores, distributes and manages Docker images
Control Plane
Management plane for container and cluster orchestration
Dockerfile
defines what goes on in the environment inside your container
92
94. Containers
Your basic isolated Docker process. Containers are to Virtual Machines as threads are to
processes. Or you can think of them as chroots on steroids.
Lifecycle
docker create creates a container but does not start it.
docker rename allows the container to be renamed.
docker run creates and starts a container in one operation.
docker rm deletes a container.
docker update updates a container's resource limits.
Starting and Stopping
docker start starts a container so it is running.
docker stop stops a running container.
docker restart stops and starts a container.
docker pause pauses a running container, "freezing" it in place.
docker unpause will unpause a running container.
docker wait blocks until running container stops.
docker kill sends a SIGKILL to a running container.
docker attach will connect to a running container.
Foundation : Docker Commands
94
95. ● Images :
Images are just templates for docker containers.
● Life cycle :
✔ docker images shows all images.
✔ docker import creates an image from a tarball.
✔ docker build creates image from Dockerfile.
✔ docker commit creates image from a container, pausing it temporarily if it is running.
✔ docker rmi removes an image.
✔ docker load loads an image from a tar archive as STDIN, including images and tags (as of 0.7).
✔ docker save saves an image to a tar archive stream to STDOUT with all parent layers, tags & versions (as of 0.7).
Info :
✔ docker history shows history of image.
✔ docker tag tags an image to a name (local or registry).
Foundation : Docker Commands
95
96. Network drivers : Docker’s networking subsystem is pluggable, using drivers.
List all docker networks : $ docker network ls
Several drivers exist by default, and provide core networking functionality:
✔ bridge: The default network driver
✔ host: For standalone containers, remove network isolation between the
✔ container and the Docker host, and use the host’s networking directly.
✔ overlay: Connect multiple Docker daemons together and enable swarm
✔ services to communicate with each other.
✔ macvlan: Allow to assign a MAC address to a container, making it
✔ appear as a physical device on network
✔ none: Disable all networking. Usually used in conjunction with a custom
✔ network driver.
Foundation : Docker Networks
96
97. ● provide better isolation and interoperability between containerized applications
✔ automatically expose all ports to each other
✔ no ports exposed to the outside world
● provide automatic DNS resolution between containers.
● Containers can be attached and detached from user-defined networks on the fly.
Commands :
✔ docker network create my-net
✔ docker network rm my-net
✔ docker create --name my-nginx --network my-net --publish 8080:80 nginx:latest
✔ docker network connect my-net my-nginx
✔ docker network disconnect my-net my-nginx
Docker Network : User-defined bridge networks
97
99. Docker Machine create hosts with Docker Engine installed on them.
Machine can create Docker hosts on :
✔ local Mac
✔ Windows box
✔ Company network
✔ Data center
✔ Cloud providers like Azure, AWS, or Digital Ocean.
docker-machine commands can:
✔ Start, inspect, stop, and restart a managed host,
✔ Upgrade the Docker client and daemon,
✔ Configure a Docker client to talk to host
Create a machine. Requires the --driver flag to indicate which provider (VirtualBox,
DigitalOcean, AWS, etc.)
Docker Machine : what’s Docker Machine
99
100. Example
Here is an example of using the --virtualbox driver to create a machine called dev.
$ docker-machine create --driver virtualbox dev
Machine drivers
✔ Amazon Web Services
✔ Microsoft Azure
✔ Digital Ocean
✔ Exoscale
✔ Google Compute Engine
✔ Linode (unofficial plugin, not supported by Docker)
✔ Microsoft Hyper-V
✔ OpenStack
✔ Rackspace
✔ IBM Softlayer
✔ Oracle VirtualBox
✔ VMware vCloud Air
✔ VMware Fusion
✔ VMware vSphere
✔ VMware Workstation (unofficial plugin, not supported by Docker)
✔ Grid 5000 (unofficial plugin, not supported by Docker)
✔ Scaleway (unofficial plugin, not supported by Docker)
Docker Machine
10
0
105. What’s docker-compose ?
Compose is a tool for defining and running multi-container Docker applications.
With Compose, you use a YAML file to configure your application’s services.
Then, with a single command, you create and start all the services from your configuration.
Compose works in all environments:
✔ Production :
✔ Staging,
✔ Development : Create and start one or more containers for each dependency (databases, queues, caches, web
service APIs, etc) with a single command.
✔ Testing,
✔ As well as CI workflows.
Docker Compose
10
5
106. Docker-compose use cases :
Compose can be used in many different ways
1- Development environments :
Create and start one or more containers for each dependency (databases, queues, caches, web service
APIs, etc) with a single command.
2- Automated testing environments :
Create and destroy isolated testing environments in just a few commands.
3- Cluster deployments :
✔ Compose can deploy to a remote single docker Engine.
✔ The Docker Engine may be a single instance provisioned with Docker Machine or an entire Docker Swarm
cluster
Docker Compose
106
107. Create service with docker-compose ?
Using Compose is basically a three-step process:
1. Define your app’s environment with a Dockerfile so it can be reproduced anywhere.
2. Define the services that make up your app in docker-compose.yml so they can be run together in an isolated
environment.
3. Lastly, run docker-compose up and Compose will start and run your entire app.
Docker Compose
107
111. What is Docker Swarm ?
Clustering and scheduling tool for docker container, feature embedded in Docker engine.
Containers added or removed as a demands changes .
Swarm turns multiple Docker hosts into single virtual docker host .
Docker Swarm
111
112. features highlights
1- Cluster management integrated with Docker Engine: Use the Docker Engine CLI to create a swarm of Docker Engines where
you can deploy application services. You don’t need additional orchestration software to create or manage a swarm.
2- Decentralized design: Instead of handling differentiation between node roles at deployment time, the Docker Engine handles
any specialization at runtime. You can deploy both kinds of nodes, managers and workers, using the Docker Engine. This
means you can build an entire swarm from a single disk image.
3- Declarative service model: Docker Engine uses a declarative approach to let you define the desired state of the various
services in your application stack. For example, you might describe an application comprised of a web front end service with
message queueing services and a database backend.
4- Scaling: For each service, you can declare the number of tasks you want to run. When you scale up or down, the swarm
manager automatically adapts by adding or removing tasks to maintain the desired state.
5- Desired state reconciliation: The swarm manager node constantly monitors the cluster state and reconciles any differences
between the actual state and your expressed desired state. For example, if you set up a service to run 10 replicas of a
container, and a worker machine hosting two of those replicas crashes, the manager creates two new replicas to replace the
replicas that crashed. The swarm manager assigns the new replicas to workers that are running and available.
Docker Swarm
112
113. Features highlights
6- Multi-host networking: You can specify an overlay network for your services. The swarm manager
automatically assigns addresses to the containers on the overlay network when it initializes or updates the
application.
7- Service discovery: Swarm manager nodes assign each service in the swarm a unique DNS name and load
balances running containers. You can query every container running in the swarm through a DNS server
embedded in the swarm.
8- Load balancing: You can expose the ports for services to an external load balancer. Internally, the swarm lets
you specify how to distribute service containers between nodes.
9- Secure by default: Each node in the swarm enforces TLS mutual authentication and encryption to secure
communications between itself and all other nodes. You have the option to use self-signed root certificates or
certificates from a custom root CA.
10- Rolling updates: At roll out time you can apply service updates to nodes incrementally. The swarm manager
lets you control the delay between service deployment to different sets of nodes. If anything goes wrong, you
can roll-back a task to a previous version of the service.
Docker Swarm
113
114. Node :
A node is an instance of the Docker engine participating in the swarm. You can also think of this as a Docker
node. You can run one or more nodes on a single physical computer or cloud server, but production swarm
deployments typically include Docker nodes distributed across multiple physical and cloud machines.
To deploy your application to a swarm, you submit a service definition to a manager node. The manager node
dispatches units of work called tasks to worker nodes.
Manager nodes also perform the orchestration and cluster management functions required to maintain the desired
state of the swarm. Manager nodes elect a single leader to conduct orchestration tasks.
Manager nodes handle cluster management tasks:
✔ maintaining cluster state
✔ scheduling services
✔ serving swarm mode HTTP API endpoints
Worker nodes receive and execute tasks dispatched from manager nodes. By default manager nodes also run
services as worker nodes, but you can configure them to run manager tasks exclusively and be manager-only
nodes. An agent runs on each worker node and reports on the tasks assigned to it. The worker node notifies the
manager node of the current state of its assigned tasks so that the manager can maintain the desired state of
each worker.
Docker Swarm
114
115. Services and Tasks
A service is the definition of the tasks to execute on the manager or worker nodes. It is the central structure of the swarm
system and the primary root of user interaction with the swarm.
When you create a service, you specify which container image to use and which commands to execute inside running
containers.
In the replicated services model, the swarm manager distributes a specific number of replica tasks among the nodes based upon
the scale you set in the desired state.
For global services, the swarm runs one task for the service on every available node in the cluster.
A task carries a Docker container and the commands to run inside the container. It is the atomic scheduling unit of swarm.
Manager nodes assign tasks to worker nodes according to the number of replicas set in the service scale. Once a task is
assigned to a node, it cannot move to another node. It can only run on the assigned node or fail.
Docker Swarm
115
116. Load Balancing
● The swarm manager uses ingress load balancing to expose the services you want to make available externally
to the swarm. The swarm manager can automatically assign the service a PublishedPort or you can configure a
PublishedPort for the service. You can specify any unused port. If you do not specify a port, the swarm
manager assigns the service a port in the 30000-32767 range.
● External components, such as cloud load balancers, can access the service on the PublishedPort of any node in
the cluster whether or not the node is currently running the task for the service. All nodes in the swarm route
ingress connections to a running task instance.
● Swarm mode has an internal DNS component that automatically assigns each service in the swarm a DNS
entry. The swarm manager uses internal load balancing to distribute requests among services within the cluster
based upon the DNS name of the service.
Docker Swarm
116
117. Docker Swarm
Initialize A Swarm
1. Make sure the Docker Engine daemon is started on the host machines.
2. On the manager node : docker swarm init --advertise-addr <MANAGER-IP>
3. On each worker node : docker swarm join --token <token_generated_by_manager> <MANAGER-IP>
4. On manager node, view information about nodes: docker node ls
Docker Swarm Cheat sheet:
https://github.com/sematext/cheatsheets/blob/master/docker-swarm-cheatsheet.md
https://docs.docker.com/swarm/reference/
117
119. ● What’s kubernetes:
A highly collaborative open source project originally conceived by Google Sometimes called:
✔ – Kube
✔ – K8s
1. Start, stop, update, and manage a cluster of machines running containers in a consistent and maintainable
way.
2. Particularly suited for horizontally scalable, stateless, or 'micro-services' application architectures
3. K8s > (docker swarm + docker-compose)
4. Kubernetes does NOT and will not expose all of the 'features' of the docker command line.
✔ Minikube : a tool that makes it easy to run Kubernetes locally.
Kubernetes
119
121. Master
Typically consists of:
➢ Kube-apiserver : Component on the master that exposes the Kubernetes API. It is the front-end for the
Kubernetes control plane.
It is designed to scale horizontally – that is, it scales by deploying more instances.
➢ Etcd : Consistent and highly-available key value store used as Kubernetes’ backing store for all cluster data.
➢ Scheduler : Component on the master that watches newly created pods that have no node assigned, and selects
a node for them to run on.
➢ Controller-manager :Component on the master that runs controllers . Logically, each controller is a separate
process, but to reduce complexity, they are all compiled into a single binary and run in a single process.
Node Controller : For checking the cloud provider to determine if a node has been deleted in the cloud
after it stops responding
Route Controller : For setting up routes in the underlying cloud infrastructure
Service Controller : For creating, updating and deleting cloud provider load balancers
Volume Controller : For creating, attaching, and mounting volumes, and interacting with the cloud provider
to orchestrate volume
Kubernetes
121
123. Pods
A Pod is the basic execution unit of a Kubernetes application–the smallest and simplest unit in the Kubernetes
object model that you create or deploy. A Pod represents processes running on your Cluster .
● Single schedulable unit of work
✔ Can not move between machines.
✔ Can not span machines.
✔ One or more containers
✔ Shared network name-space
● Metadata about the container(s)
● Env vars – configuration for the container
● Every pod gets an unique IP
✔ Assigned by the container engine, not kube
Kubernetes
123
126. Plan
● Continuous Integration (CI)
● What is it?
● What are the benefits?
● Continuous Build Systems
● Jenkins
● What is it?
● Where does it fit in?
● Why should I use it?
● What can it do?
● How does it work?
● Where is it used?
● How can I get started?
● Putting it all together
● Conclusion
● References
126
127. CI- Defined
“Continuous Integration is a software development practice
where members of a team integrate their work frequently,
usually each person integrates at least daily - leading to
multiple integrations per day. Each integration is verified by
an automated build (including test) to detect integration
errors as quickly as possible” – Martin Fowler
127
128. CI- What does it really mean ?
● At a regular frequency (ideally at every commit), the system is:
✔ Integrated
All changes up until that point are combined into the project
✔ Built
The code is compiled into an executable or package
✔ Tested
Automated test suites are run
✔ Archived
Versioned and stored so it can be distributed as is, if desired
✔ Deployed
Loaded onto a system where the developers can interact with it
128
132. Improving Your Productivity
Continuous integration can help you go faster
Detect build breaks sooner
Report failing tests more clearly
Make progress more visible
132
134. Jenkins for Continuous Integration
Jenkins – open source continuous integration server
Jenkins (http://jenkins-ci.org/) is
Easy to install
Easy to use
Multi-technology
Multi-platform
Widely used
Extensible
Free
134
135. Jenkins for a Developer
Easy to install
Download one file – jenkins.war
Run one command – java –jar jenkins.war
Easy to use
Create a new job – checkout and build a small project
Checkin a change – watch it build
Create a test – watch it build and run
Fix a test – checkin and watch it pass
Multi-technology
Build C, Java, C#, Python, Perl, SQL, etc.
Test with Junit, Nunit, MSTest, etc.
135
138. Developer demo goes here
Create a new job from a Subversion repository
Build that code, see build results
Run its tests, see test results
Make a change and watch it run through the system
Languages
Java
C
Python
138
139. More Power – Jenkins Plugins
Jenkins has over 1000 plugins
Software configuration management
Builders
Test Frameworks
Virtual Machine Controllers
Notifiers
Static Analyzers
139
140. Jenkins Plugins - SCM
Version Control Systems
Accurev
Bazaar
BitKeeper
ClearCase
Darcs
Dimensions
Git
Harvest
MKS Integrity
PVCS
StarTeam
Subversion
Team Foundation Server
Visual SourceSafe
140
144. Jenkins – Integration for You
Jenkins can help your development be
Faster
Safer
Easier
Smarter
144
145. Declarative Pipelines
Pipelines can now be defined with a simpler syntax.
• Declarative “section” blocks for common configuration areas, like
• stages
• tools
• post-build actions
• notifications
• environment
• build agent or Docker image and more to come!
• All wrapped up in a pipeline { } step, with syntactic and semantic
validation available.
145
146. Declarative Pipelines
This is not a separate thing from Pipeline. It’s part of Pipeline.
In fact, it's actually even still Groovy. Sort of. =)
Configured and run from a Jenkinsfile.
Step syntax is valid within the pipeline block and outside it.
But this does make some things easier:
Notifications and postBuild actions are run at the end of your build even if the build has failed.
Agent provides simpler control over where your build runs.
You’ll see more as we keep going!
146
147. Declarative Pipelines
pipeline {
agent { docker { image 'golang' } }
stages {
stage('build') {
steps {
sh 'go version'
}
}
}
}
What does this look like?
147
148. Declarative Pipelines
● What we’re calling “sections”
● Name of the section and the value for that section
● Current sections:
● Stages
● Agent
● Environment
● Tools
● Post Build
● Notifications
So what goes in the pipeline block?
148
149. Declarative Pipelines
The stages section contains one or more stage blocks.
Stage blocks look the same as the new block-scoped stage step.
Think of each stage block as like an individual Build Step in a Freestyle job.
There must be a stages section present in your pipeline block.
Example:
stages {
stage("build") {
timeout(time: 5, units: 'MINUTES') {
sh './run-some-script.sh'
}
}
stage("deploy") {
sh "./deploy-something.sh"
}
}
Stages:
149
150. Declarative Pipelines
Agent determines where your build runs.
Current possible settings:
Agent label:’’ - Run on any node
Agent docker:’ubuntu’ - Run on any node within a Docker container of the “ubuntu” image
Agent docker:’ubuntu’, label:’foo’ - Run on a node with the label “foo”
within a Docker container of the “ubuntu” image
Agent none - Don’t run on a node at all - manage node blocks yourself within
your stages.
We are planning to make this extensible and composable going forward.
There must be an agent section in your pipeline block.
Agent:
150
151. Declarative Pipelines
The tools section allows you to define tools to autoinstall and add to the PATH.
Note - this doesn’t work with agent docker:’ubuntu’.
Note - this will be ignored if agent none is specified.
The tools section takes a block of tool name/tool version pairs, where the tool
version is what you’ve configured on this master.
Example:
tools {
maven “Maven 3.3.9”
jdk “Oracle JDK 8u40”
}
Tools:
151
152. Declarative Pipelines
environment is a block of key = value pairs that will be added to the
envionment the build runs in.
• Example:
environment {
FOO = “bar”
BAZ = “faz”
}
Environment:
152
153. Declarative Pipelines
Much like Post Build Actions in Freestyle
Post Build and notifications both contain blocks with one or more build
condition keys and related step blocks.
The steps for a particular build condition will be invoked if that build condition is met. More on this next
page!
Post Build checks its conditions and executes them, if satisfied, after all stages have completed, in the
same node/Docker container as the stages.
Notifications checks its conditions and executes them, if satisfied, after Post Build, but doesn’t run on a
node at all.
Notifications and Post Build:
153
154. Declarative Pipelines
Build Condition is an extension point.
Implementations provide:
A condition name
A method to check whether the condition has
been satisfied with the current build status.
Built-in conditions are listed on the right.
Build condition blocks:
154
157. Declarative Pipelines
Jenkins supports the master-slave architecture.
Jenkins can run the same test case on different environments in parallel using Jenkins
Distributed Builds.
known as Jenkins Distributed Builds.
which in turn helps to achieve the desired results
quickly.
All of the job results are collected and combined on the master node for monitoring
Master/slave architecture
157
159. Declarative Pipelines
Jenkins Master
Scheduling build jobs.
Dispatching builds to the slaves for the execution.
Monitor the slaves.
Recording and presenting the build results.
Can also execute build jobs directly.
Jenkins Slave
It hears requests from the Jenkins Master instance.
Slaves can run on a variety of operating systems.
The job of a Slave is to do as they are told to, which involves executing
build jobs dispatched by the Master.
We can configure a project to always run on a particular Slave machine
or a particular type of Slave machine, or simply let Jenkins pick the next
available Slave
Master/slave architecture
159
160. Declarative Pipelines
pipeline{
agent none
stages {
stage("distribute") {
parallel (
"windows":{
node('windows') {
bat "print from windows"
}
},
"mac":{
node('osx') {
sh "print from mac"
}
},
"linux":{
node('linux') {
sh "print from linux"
}
} )
}
}
}
Parallel execution on multiple OSes
160
191. Why monitor?
Know when things go wrong
To call in a human to prevent a business-level issue, or prevent an issue in advance
Be able to debug and gain insight
Trending to see changes over time, and drive technical/business decisions
To feed into other systems/processes (e.g. QA, security, automation)
192. What is Prometheus?
Prometheus is a metrics-based time series database, designed for white box
monitoring.
It supports labels (dimensions/tags).
Alerting and graphing are unified, using the same language.
193. Development History
Inspired by Google’s Borgmon monitoring system.
Started in 2012 by ex-Googlers working in Soundcloud as an open source project,
mainly written in Go. Publically launched in early 2015, 1.0 released in July 2016.
It continues to be independent of any one company, and is incubating with the
CNCF.
194. Prometheus Community
Prometheus has a very active community.
Over 250 people have contributed to official repos.
There over 100 3rd party integrations.
Over 200 articles, talks and blog posts have been written about it.
It is estimated that over 500 companies use Prometheus in production.
195. Prometheus Installation
Using pre-compiled binaries
We provide precompiled binaries for most official Prometheus components. Check out the
download section for a list of all available versions.
From source
For building Prometheus components from source, see the Makefile targets in the respective
repository.
Using Docker
All Prometheus services are available as Docker images on Quay.io or Docker Hub.
Running Prometheus on Docker is as simple as docker run -p 9090:9090 prom/prometheus.
This starts Prometheus with a sample configuration and exposes it on port 9090.
197. Features and components
Prometheus's main features are:
a multi-dimensional data model with time series data identified by metric name and
key/value pairs
PromQL, a flexible query language to leverage this dimensionality
no reliance on distributed storage; single server nodes are autonomous
time series collection happens via a pull model over HTTP
pushing time series is supported via an intermediary gateway
targets are discovered via service discovery or static configuration
multiple modes of graphing and dashboarding support
198. Features and components
Prometheus ecosystem consists of multiple components, many of which are optional:
the main Prometheus server which scrapes and stores time series data
client libraries for instrumenting application code
a push gateway for supporting short-lived jobs
special-purpose exporters for services like HAProxy, StatsD, Graphite, etc.
an alertmanager to handle alerts
various support tools
Most Prometheus components are written in Go, making them easy to build and deploy as
static binaries.
199. Features and components
Prometheus scrapes metrics from instrumented jobs, either directly or via an
intermediary push gateway for short-lived jobs. It stores all scraped samples locally and
runs rules over this data to either aggregate and record new time series from existing
data or generate alerts. Grafana or other API consumers can be used to visualize the
collected data.
200. METRIC TYPES
The Prometheus client libraries offer four core metric types. These are currently only
differentiated in the client libraries (to enable APIs tailored to the usage of the specific types)
and in the wire protocol.
Counter : A counter is a cumulative metric that represents a single monotonically increasing
counter whose value can only increase or be reset to zero on restart.
Do not use a counter to expose a value that can decrease
Gauge: A gauge is a metric that represents a single numerical value that can arbitrarily go
up and down.
Histogram:A histogram samples observations (usually things like request durations or
response sizes) and counts them in configurable buckets. It also provides a sum of all
observed values.
Summary : Similar to a histogram, a summary samples observations (usually things like
request durations and response sizes). While it also provides a total count of observations and
a sum of all observed values, it calculates configurable quantiles over a sliding time window.
201. Exporters and integrations
There are a number of libraries and servers which help in exporting existing metrics from
third-party systems as Prometheus metrics. This is useful for cases where it is not feasible to
instrument a given system with Prometheus metrics directly (for example, HAProxy or Linux
system stats).
Third-party exporters:
Some of these exporters are maintained as part of the official Prometheus GitHub organization,
those are marked as official, others are externally contributed and maintained.
We encourage the creation of more exporters but cannot vet all of them for best practices.
Commonly, those exporters are hosted outside of the Prometheus GitHub organization.
The exporter default port wiki page has become another catalog of exporters, and may include
exporters not listed here due to overlapping functionality or still being in development.
The JMX exporter can export from a wide variety of JVM-based applications, for example Kafka
and Cassandra.
204. Why log analysis
Lots of users
✔ Faculty & staff & students more than 40000 users on campus
Lots of systems
✔ Routers, firewalls, servers....
Lots of logs
✔ Netflow, syslogs, access logs, service logs, audit logs.…
Nobody cares until something go wrong....
205. -Log management platform can monitor all above given issues as well as process operating system
, , , , .logs NGIN/ IIS server log for web traffic analysis application logs and logs on cloud
, .Log management helps DevOps engineers system admin to make better business decisions
,The performance of virtual machines in the cloud may vary based on the specific loads
, .environments and number of active users in the system
✔ ,Therefore reliability and node failure can become a significant issue
Why log analysis
206. -Log management platform can monitor all above given issues as well as process operating system
, , , , .logs NGIN/ IIS server log for web traffic analysis application logs and logs on cloud
, .Log management helps DevOps engineers system admin to make better business decisions
,The performance of virtual machines in the cloud may vary based on the specific loads
, .environments and number of active users in the system
✔ ,Therefore reliability and node failure can become a significant issue
Logs & events analysis for network managements
207. - :A collection of three open source products
✔ E stands for ElasticSearch: used for storing logs
✔ L stands for LogStash : used for both shipping as well as
processing and storing logs
✔ K stands for stands for Kibana: ( )is a visualization tool a web interface
, ,which is hosted through Nginx or Apache Designed to take data from any source in any format
, , .and to search analyze and visualize that data in real time
Provides centralized logging that be useful when attempting to identify problems with servers or
.applications
.It allows user to search all your logs in a single place
ELK stands for Stack : What is the ELK stands for Stack?
209. .NoSQL database built with RESTful APIS
.It offers advanced queries to perform detail analysis and stores all the data centrally
, .Also allows you to store search and analyze big volume of data
.Executing a quick search of the documents
✔ .also offers complex analytics and many advanced features
.Offers many features and advantages
Elasticsearch
210. Features :
✔ Open source search server is written using Java
✔ Used to index any kind of heterogeneous data
✔ -Has REST API web interface with JSON output
✔ -Full Text Search
✔ , ,Shared replicated searchable JSON document store
✔ - & -Multi language Geo location support
Advantages
✔ -Store schema less data and also creates a schema for data
✔ - .Manipulate data record by record with the help of Multi document APIs
✔ Perform filtering and querying of data for insights
✔ Based on Apache and provides RESTful API
✔ , ,Provides horizontal scalability reliability and multitenant capability for real time use of indexing to make it
faster search
Elasticsearch : Features and advantages
211. Cluster : A collection of nodes which together holds data and provides joined indexing and search
.capabilities
Node : . .An elasticsearch Instance It is created when an elasticsearch instance begins
Index : .A collection of documents which has similar characteristics
. ., , .e g customer data product catalog
✔ , , , .It is very useful while performing indexing search update and delete operations
: .Document The basic unit of information which can be indexed It is expressed in JSON
( : ) .key value pair
'{" ": " "}'.user nullcon Every single Document is associated with a type and a unique id
Elasticsearch : Used terms
212. .It is the data collection pipeline tool
.It collects data inputs and feeds into the Elasticsearch
.It gathers all types of data from the different source and makes it available for further use
Logstash can unify data from disparate sources and normalize the data into your desired
.destinations
:It consists of three components
✔ Input : .passing logs to process them into machine understandable format
✔ Filters : .It is a set of conditions to perform a particular action or event
✔ Output : Decision maker for processed event or log
Logstash
213. Features
✔ Events are passed through each phase using internal queues
✔ Allows different inputs for your logs
✔ /Filtering parsing for your logs
Advantages
✔ .Offers centralize the data processing
✔ / .It analyzes a large variety of structured unstructured data and events
✔ Offers plugins to connect with various types of input sources and platforms
Logstash: Features and Advantages
214. .A data visualization which completes the ELK stands for stack
, ,Dashboard offers various interactive diagrams geospatial data and graphs to visualize complex
.quires
, , .It can be used for search view and interact with data stored in Elasticsearch directories
,It helps users to perform advanced data analysis and visualize their data in a variety of tables
, .charts and maps
.In K stands for ibana there are different methods for performing searches on data
K stands for ibana: what’s K stands for ibana ?
215. :Features
✔ Visualizing indexed information from the elastic cluster
✔ -Enables real time search of indexed information
✔ , , .Users can search View and interact with data stored in Elasticsearch
✔ & , , .Execute queries on data visualize results in charts tables and maps
✔ .Configurable dashboard to slice and dice logstash logs in elasticsearch
✔ , , .Providing historical data in the form of graphs charts etc
:Advantages
✔ Easy visualizing
✔ Fully integrated with Elasticsearch
✔ - , , ,Real time analysis charting summarization and debugging capabilities
✔ -Provides instinctive and user friendly interface
✔ Sharing of snapshots of the logs searched through
✔ Permits saving the dashboard and managing multiple dashboards
K stands for ibana: Features and advantages
216. ✔ —Filebeat is a log shipper belonging to the Beats family a group of lightweight shippers installed
.on hosts for shipping different kinds of data into the ELK stands for Stack for analysis Each beat is dedicated
— , , ,to shipping different types of information Winlogbeat for example ships Windows event logs
, . , , .Metricbeat ships host metrics and so forth Filebeat as the name implies ships log files
✔ - , —In an ELK stands for based logging pipeline Filebeat plays the role of the logging agent installed on the
, ,machine generating the log files tailing them and forwarding the data to either Logstash for more
.advanced processing or directly into Elasticsearch for indexing
Filebeat: what’s Filebeat
218. ✔ Centralized logging can be useful when attempting to identify problems with servers or applications
✔ ELK stands for stack is useful to resolve issues related to centralized logging system
✔ ,ELK stands for stack is a collection of three open source tools Elasticsearch Logstash K stands for ibana
✔ Elasticsearch is a NoSQL database
✔ Logstash is the data collection pipeline tool
✔ K stands for ibana is a data visualization which completes the ELK stands for stack
✔ - ,In cloud based environment infrastructures performance and isolation is very important
✔ In ELK stands for stack processing speed is strictly limited whereas Splunk offers accurate and speedy processes
✔ , , ,Netflix LinkedIn Tripware Medium all are using ELK stands for stack for their business
✔ ELK stands for works best when logs from various Apps of an enterprise converge into a single ELK stands for instance
✔ Different components In the stack can become difficult to handle when you move on to complex setup
Summary