Skip to content

Commit

Permalink
new hybrid application monitoring report added (#115)
Browse files Browse the repository at this point in the history
* hybrid application monitoring report addition (#116)
  • Loading branch information
alexafshar committed Apr 25, 2023
1 parent 901fb37 commit a6a162c
Show file tree
Hide file tree
Showing 16 changed files with 1,130 additions and 20 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ on:
branches: [ master ]
schedule:
- cron: "0 0 * * *"
workflow_dispatch:

jobs:
analyze:
Expand Down Expand Up @@ -67,4 +68,4 @@ jobs:
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2
8 changes: 6 additions & 2 deletions .github/workflows/format.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
name: format with black
on: [ push, pull_request ]
on:
push:
pull_request:
workflow_dispatch:

jobs:
linter_name:
name: runner / black
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Validate with Black
uses: rickstaa/action-black@v1
uses: psf/black@stable
id: action_black
with:
black_args: ". --line-length=150"
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ on:
schedule:
# run tests every night at midnight
- cron: "0 0 * * *"
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
Expand Down
34 changes: 21 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,20 +173,28 @@ This program will create the following files in the `out` directory.
## Program Architecture

### General Description
- Configuration Assessment Tool or config-assessment-tool as it is referenced on GitHub is an open-source project that was developed by AppDynamics Engineers with the purpose of evaluating the configuration and quality of the instrumentation of applications that are being monitored by the AppDynamics Application Performance Monitoring (APM) product suite. Its intended audience are AppDynamics/Cisco customers as well as AppD/Cisco personal that assist the customers in improving the instrumentation of their applications. The tool is Python (3.9+) based and hence requires a Python installation.
- Users run the tool directly from source, or using docker container (locally build only and not pulled from any repo) or the executable bundle (Windows and Linux bundles) that contains shared libraries or executable files for Python. If users wish to run the code using Docker, they must build to the local image on their platform(using the provided Dockerfile), therefore a Docker engine install is also required if running from Docker containers. Refer to the GitHub repository for instructions on how to build the image and run the tool using Docker.
- There are Python packages that are required that are pulled from Pypi package repository when config-assessment-tool is installed. These can be examined by following the build from source instructions outlined on the GitHub repo.
When config-assessment-tool starts it reads the job file with customer provided properties and connects to the AppDynamics controller url as defined in that job file. The controller(s) can be an AppDynamics hosted Saas controller(s) or customer's on-premises installation(s). The tool also uses the credentials in the job file to authenticate to the controller and using the generatee temporary session token, it uses the AppDynamics Controller REST API’s to pull various metrics and generate the “output” directory that contains these metrics in the form of various Excel Worksheet files along with some other supplemental data files. These are the artifacts that are used by the customers to examine and provide various metrics around how well each of the applications that are being monitored on the respective controller.
- There are no other communication from the tool to any other external services. We solely utilize the AppDynamics’s Controller REST API’s. See the online API documentation for the superset reference for more information.
- Consult the below links for the aforementioned references:
- AppDynamics API's: https://docs.appdynamics.com/appd/22.x/latest/en/extend-appdynamics/appdynamics-apis#AppDynamicsAPIs-apiindex
- Job file: https://github.com/Appdynamics/config-assessment-tool/blob/master/input/jobs/DefaultJob.json
- Buil from source: https://github.com/Appdynamics/config-assessment-tool#from-source
- config-assessment-tool GitHub open source project: https://github.com/Appdynamics/config-assessment-tool
- AppDynamics - https://www.appdynamics.com/
- Docker: https://docs.docker.com/
- PyPi Python package repo: https://pypi.org/
The Configuration Assessment Tool, also known as config-assessment-tool on GitHub, is an open-source project developed by AppDynamics engineers. Its purpose is to evaluate the configuration and quality of instrumentation in applications that are monitored by the AppDynamics Application Performance Monitoring (APM) product suite. The intended audience for this tool is AppDynamics/Cisco customers and AppD/Cisco personnel who assist customers in improving the instrumentation of their applications. The tool is Python-based (3.9+) and therefore requires a Python installation unless using the self-contained platform specific executable bundles(Linux,Windows).

Users can run the tool directly from the source or use the docker container (locally built only and not pulled from any repo), or the executable bundle (Windows and Linux bundles) that contain shared libraries or executable files for Python. If users wish to run the code using Docker, they must build the local image on their platform (using the provided Dockerfile) as we do not currently publish platform specific Docker images of the tool into any repositories. Therefore, a Docker engine install is also required for container-based install/build and execution.

If users do not wish to install Python and Docker and are looking for a self-contained executable bundle, we recommend using the latest version of the linux tar ball or the Windows zip file available on the release page and follow instructions for [Platform executable installation steps](https://github.com/Appdynamics/config-assessment-tool#platform-executable).

There are Python packages and library dependencies that are required and pulled from the PyPi package repository when config-assessment-tool is installed. These can be examined by following the [build from source instructions](https://github.com/Appdynamics/config-assessment-tool#from-source) and examining the downloaded packages into your local Python environment.

When config-assessment-tool starts, it reads the job file with the customer-provided properties and connects to the AppDynamics controller URL defined in that job file. The controller(s) can be AppDynamics hosted Saas controllers or customer's on-premises installations. The tool also uses the credentials in the job file to authenticate to the controller. Using the generated temporary session token, it uses the AppDynamics Controller REST API to pull various metrics and generate the "output" directory. This directory contains these metrics in the form of various Excel Worksheet files, along with some other supplemental data files. These are the artifacts used by customers to examine and provide various metrics around how well each of the applications being monitored on the respective controller is performing.

There is no other communication from the tool to any other external services. We solely utilize the AppDynamics Controller REST API. See the online API documentation for the superset reference for more information.

Consult the links below for the aforementioned references:

- AppDynamics API's: https://docs.appdynamics.com/appd/22.x/latest/en/extend-appdynamics/appdynamics-apis#AppDynamicsAPIs-apiindex
- Platform executable bundles: https://github.com/Appdynamics/config-assessment-tool/releases
- Job file: https://github.com/Appdynamics/config-assessment-tool/blob/master/input/jobs/DefaultJob.json
- Build from source: https://github.com/Appdynamics/config-assessment-tool#from-source
- config-assessment-tool GitHub open source project: https://github.com/Appdynamics/config-assessment-tool
- AppDynamics: https://www.appdynamics.com/
- Docker: https://docs.docker.com/
- PyPi Python package repository: https://pypi.org/

### Backend

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v1.5.9.4
v1.5.9.5
5 changes: 5 additions & 0 deletions backend/api/appd/AppDController.py
Original file line number Diff line number Diff line change
Expand Up @@ -349,3 +349,8 @@ def getSyntheticPrivateAgentUtilization(self, applicationId: Path, body: Body):
@post("/controller/restui/eumSyntheticJobListUiService/getSessionData")
def getSyntheticSessionData(self, body: Body):
"""Retrieves Synthetic Session Data"""

@params({"output": "json"})
@get("/controller/restui/report/list")
def getReportList(self):
"""Retrieves Report Data"""
8 changes: 8 additions & 0 deletions backend/config-assessment-tool.spec
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ a = Analysis(
("../backend/resources/pptAssets/background_2.jpg", "backend/resources/pptAssets"),
("../backend/resources/pptAssets/criteria.png", "backend/resources/pptAssets"),
("../backend/resources/pptAssets/criteria2.png", "backend/resources/pptAssets"),
("../backend/resources/pptAssets/checkmark.png", "backend/resources/pptAssets"),
("../backend/resources/pptAssets/xmark.png", "backend/resources/pptAssets"),
("../backend/resources/pptAssets/HybridApplicationMonitoringUseCase.json", "backend/resources/pptAssets"),
("../backend/resources/pptAssets/HybridApplicationMonitoringUseCase_template.pptx", "backend/resources/pptAssets"),
(path.join(site_packages,"pptx","templates"), "pptx/templates"), # for pptx
],
hiddenimports=[],
Expand Down Expand Up @@ -80,3 +84,7 @@ shutil.copyfile("backend/resources/pptAssets/background.jpg", f"{DISTPATH}/{bund
shutil.copyfile("backend/resources/pptAssets/background_2.jpg", f"{DISTPATH}/{bundle_name}/backend/resources/pptAssets/background_2.jpg")
shutil.copyfile("backend/resources/pptAssets/criteria.png", f"{DISTPATH}/{bundle_name}/backend/resources/pptAssets/criteria.png")
shutil.copyfile("backend/resources/pptAssets/criteria2.png", f"{DISTPATH}/{bundle_name}/backend/resources/pptAssets/criteria2.png")
shutil.copyfile("backend/resources/pptAssets/checkmark.png", f"{DISTPATH}/{bundle_name}/backend/resources/pptAssets/checkmark.png")
shutil.copyfile("backend/resources/pptAssets/xmark.png", f"{DISTPATH}/{bundle_name}/backend/resources/pptAssets/xmark.png")
shutil.copyfile("backend/resources/pptAssets/HybridApplicationMonitoringUseCase.json", f"{DISTPATH}/{bundle_name}/backend/resources/pptAssets/HybridApplicationMonitoringUseCase.json")
shutil.copyfile("backend/resources/pptAssets/HybridApplicationMonitoringUseCase_template.pptx", f"{DISTPATH}/{bundle_name}/backend/resources/pptAssets/HybridApplicationMonitoringUseCase_template.pptx")
2 changes: 2 additions & 0 deletions backend/core/Engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
from extractionSteps.maturityAssessment.mrum.NetworkRequestsMRUM import NetworkRequestsMRUM
from extractionSteps.maturityAssessment.mrum.OverallAssessmentMRUM import OverallAssessmentMRUM
from output.presentations.cxPpt import createCxPpt
from output.presentations.cxPptFsoUseCases import createCxHamUseCasePpt
from output.reports.AgentMatrixReport import AgentMatrixReport
from output.reports.CustomMetricsReport import CustomMetricsReport
from output.reports.DashboardReport import DashboardReport
Expand Down Expand Up @@ -358,6 +359,7 @@ def finalize(self, startTime):
)

createCxPpt(self.jobFileName)
createCxHamUseCasePpt(self.jobFileName)

logging.info(f"----------Complete----------")
# if controllerData.json file exists, delete it
Expand Down
Loading

0 comments on commit a6a162c

Please sign in to comment.